La recente vulnerabilità che ha colpito l’ecosistema PHP ha messo in chiaro una cosa: lasciare versioni non aggiornate dell’interprete sul server è un rischio che nessun amministratore di sistema può permettersi. Se gestisci un server VPS Ubuntu con OpenLiteSpeed, il problema principale non è aggiornare un singolo ramo di PHP, ma garantire che tutti i pacchetti lsphp installati vengano allineati senza rompere i siti in produzione.
Quando sul server coesistono diverse versioni (come PHP 8.1, 8.2 e 8.3 per vari virtual host), l’aggiornamento manuale pacchetto per pacchetto diventa lungo e soggetto a sviste. In questo articolo vediamo come aggiornare l’intera stack lsphp in un solo comando, creando prima una rete di protezione con snapshot e backup locale delle configurazioni per eseguire un ripristino immediato se qualcosa va storto.
Leggi anche: Aggiornare Versione di Ubuntu e Creare una Snapshot del Sistema
1. Salvare lo stato del server: Snapshot e backup preventivo
Aggiornare l’interprete PHP equivale a sostituire il motore di un’auto in corsa: prima di girare la prima chiave inglese, devi assicurarti che l’auto sia bloccata in sicurezza.
Il livello di sicurezza zero: Snapshot dal provider
Lo snapshot a livello di infrastruttura è la scelta migliore. Cattura l’intero stato del disco e ti permette di tornare al secondo esatto prima della modifica. Puoi farlo direttamente dalla dashboard del tuo provider (Hetzner, DigitalOcean, AWS, Contabo, Linode) oppure tramite la rispettiva interfaccia a riga di comando.
Se usi Hetzner Cloud CLI:
Bash
hcloud server create-image --type snapshot --description "pre-php-update-$(date +%F)" NOME_SERVER
Se gestisci i tuoi nodi su DigitalOcean CLI:
Bash
doctl compute droplet-action snapshot ID_DROPLET --snapshot-name "pre-php-update-$(date +%F)"
Backup locale di versioni, pacchetti e configurazioni
Anche con lo snapshot attivo, crea sempre un archivio locale. Se l’aggiornamento fallisce solo su un modulo specifico, un ripristino chirurgico dei singoli pacchetti via terminale è molto più rapido rispetto al ripristino dell’intera macchina virtuale.
Crea la cartella di backup e salva l’elenco esatto delle versioni installate:
Bash
sudo mkdir -p /root/php-backup
dpkg-query -W -f='${Package}=${Version}\n' 'lsphp*' | sudo tee /root/php-backup/lsphp-versions.txt
Salva le configurazioni attive di PHP e OpenLiteSpeed in un archivio compresso:
Bash
sudo tar czf /root/php-backup/php-conf-$(date +%F).tar.gz /usr/local/lsws/lsphp*/etc /usr/local/lsws/conf
Copia i file .deb attualmente presenti nella cache di sistema. Ti serviranno se dovessi fare un downgrade offline senza passare dai repository di rete:
Bash
sudo mkdir -p /root/php-backup/debs && sudo cp /var/cache/apt/archives/lsphp*.deb /root/php-backup/debs/ 2>/dev/null
2. Aggiornare tutti i pacchetti lsphp in un solo comando
Invece di elencare a mano ogni estensione (lsphp83-curl, lsphp83-opcache, lsphp82-mysql e così via), utilizziamo dpkg e awk per estrarre al volo tutti i pacchetti LiteSpeed PHP attivi sulla macchina e passarli al gestore APT.
Esegui questa sequenza per aggiornare l’intera stack e riavviare il web server:
Bash
sudo apt update
sudo apt install --only-upgrade -y $(dpkg -l | awk '/^ii lsphp/ {print $2}')
sudo systemctl restart lsws
Il comando individua automaticamente ogni pacchetto lsphp presente nel sistema e applica le ultime patch disponibili sul repository ufficiale di LiteSpeed.
3. Gestire l’eventuale PHP di sistema (Opzionale)
Su alcuni server, oltre ai moduli lsphp integrati in OpenLiteSpeed, potrebbero essere presenti i pacchetti PHP nativi di Ubuntu usati da script CLI, cronjob o altri servizi di supporto.
Leggi anche: Vulnerabilità PHP e Server Web: Come Aggiornare OpenLiteSpeed su VPS Ubuntu
Se la tua VPS utilizza anche questi pacchetti, aggiornali con la stessa logica:
Bash
sudo apt install --only-upgrade -y $(dpkg -l | awk '/^ii php/ {print $2}')
Nel caso in cui tu stia utilizzando istanze PHP-FPM per particolari servizi secondari, riavvia i demoni dedicati:
Bash
sudo systemctl restart 'php*-fpm'
4. Verifica post-installazione e controllo dei log
Una volta completato l’upgrade, non fidarti soltanto dell’uscita senza errori di APT. Verifica che gli eseguibili rispondano correttamente e che il web server stia lavorando senza anomalie.
Controlla le versioni di ciascun binario lsphp presente sul sistema:
Bash
for v in /usr/local/lsws/lsphp*/bin/php; do echo "$v"; $v -v | head -n 1; done
Verifica lo stato operativo di OpenLiteSpeed:
Bash
sudo systemctl status lsws
Ispeziona le ultime righe del log degli errori alla ricerca di eventuali fallimenti nel caricamento di estensioni o moduli:
Bash
sudo tail -n 50 /usr/local/lsws/logs/error.log
Dopo aver eseguito i controlli da terminale, apri il browser: naviga sulle pagine dei siti ospitati, accedi ai rispettivi pannelli di amministrazione (come la dashboard di WordPress) e accertati che le chiamate alle API, la gestione delle immagini e le query al database rispondano regolarmente.
5. Procedura di Rollback: Come tornare indietro in caso di problemi
Se un sito smette di funzionare a causa di un’incompatibilità introdotta dall’aggiornamento, hai due opzioni per riportare il server allo stato iniziale.
Opzione A: Ripristino tramite Snapshot
È la soluzione più radicale. Dal pannello di controllo del tuo provider hosting seleziona la voce Restore o Rebuild from Snapshot.Nota di attenzione: Questa operazione sovrascrive l’intero disco. Qualsiasi dato modificato dopo la creazione dello snapshot (nuovi ordini e-commerce, commenti, caricamenti di file o modifiche ai database) andrà perso.
Opzione B: Downgrade mirato dei pacchetti
Se vuoi ripristinare solo la stack PHP mantenendo intatti i dati di sistema, usa il file delle versioni generato prima dell’aggiornamento:
Bash
sudo apt install --allow-downgrades -y $(cat /root/php-backup/lsphp-versions.txt)
sudo tar xzf /root/php-backup/php-conf-YYYY-MM-DD.tar.gz -C /
sudo systemctl restart lsws
(Sostituisci YYYY-MM-DD con la data esatta riportata sul file salvato in /root/php-backup/).
Se l’aggiornamento del repository ha già rimosso le vecchie versioni dai server remoti, forza l’installazione offline dai file .deb archiviati in precedenza:
Bash
sudo dpkg -i /root/php-backup/debs/*.deb
sudo systemctl restart lsws
Bloccare gli aggiornamenti automatici dei pacchetti ripristinati
Dopo aver effettuato il rollback, evita che un eventuale aggiornamento automatico di sistema (unattended-upgrades) aggiorni di nuovo i pacchetti appena ripristinati. Imposta il blocco temporaneo con apt-mark:
Bash
sudo apt-mark hold $(dpkg -l | awk '/^ii lsphp/ {print $2}')
Quando sarà pronta la patch risolutiva o avrai sistemato il codice incompatibile sul sito, potrai sbloccare i pacchetti per consentire i futuri aggiornamenti:
Bash
sudo apt-mark unhold $(dpkg -l | awk '/^ii lsphp/ {print $2}')
Automazione: Script unico per backup e aggiornamento
Se gestisci più VPS o preferisci eseguire l’intera procedura di salvataggio e aggiornamento in un solo passaggio (dopo aver fatto lo snapshot dal pannello del provider), puoi incollare questo blocco unico nel terminale:
Bash
sudo mkdir -p /root/php-backup/debs && \
dpkg-query -W -f='${Package}=${Version}\n' 'lsphp*' | sudo tee /root/php-backup/lsphp-versions.txt && \
sudo tar czf /root/php-backup/php-conf-$(date +%F).tar.gz /usr/local/lsws/lsphp*/etc /usr/local/lsws/conf && \
sudo cp /var/cache/apt/archives/lsphp*.deb /root/php-backup/debs/ 2>/dev/null; \
sudo apt update && \
sudo apt install --only-upgrade -y $(dpkg -l | awk '/^ii lsphp/ {print $2}') && \
sudo systemctl restart lsws
Mantenere l’infrastruttura aggiornata è il pilastro fondamentale della sicurezza informatica. Eseguire queste operazioni strutturando prima un piano di ripristino solido permette di applicare le patch di sicurezza tempestivamente, eliminando il rischio di fermi macchina prolungati in produzione.
Altro per te
WordpressSito WordPress che si blocca ogni 5-6 ore: la causa nascosta è php-fpm su OpenLiteSpeed
WordPress si blocca con OpenLiteSpeed, Redis, php-fpm e Cloudflare, funziona perfettamente per alcune ore, poi si blocca mostrando l'errore Cloudflare 524 (A timeout occurred).…
PHP2Shell: come limitare i danni di una falla PHP con disable_functions e blocco dei file in uploads
Firewall UFW su Ubuntu con OpenLiteSpeed: quali porte aprire e come proteggere il pannello sulla 7080
I migliori comandi per wp-config.php: come ottimizzare, proteggere e velocizzare WordPress
PHP, aggiornamento di sicurezza critico: cosa fare su aaPanel e sul proprio server
PHP 8.4 non si installa su aaPanel mancano le estensioni – Risolto!
Come aumentare i limiti di PHP su WordPress: Di quanto e perchè
Qual’è la versione PHP migliore per WordPress? Comparazione (PHP 7.4, 8.1, 8.2, 8.3, 8.4)
Altri articoli su PHP
- Plugin WordPress vulnerabili o abbandonati: come riconoscerli ed eliminarli prima che bucano il sito27 Ott
- Aggiornamenti automatici di sicurezza su Ubuntu: come configurare unattended-upgrades su un VPS27 Ott
- PHP2Shell: come limitare i danni di una falla PHP con disable_functions e blocco dei file in uploads27 Ott
- I migliori comandi per wp-config.php: come ottimizzare, proteggere e velocizzare WordPress27 Ott
- Cosa fare se un aggiornamento di WordPress rompe il sito: guida alla diagnostica27 Ott
- PHP2Shell: la doppia falla che fa tremare milioni di siti web (WordPress compreso)27 Ott
