Le due gravissime vulnerabilità "PHP2Shell" di ottobre 2026 ci hanno ricordato quanto sia importante aggiornare tempestivamente l'interprete PHP installato sul proprio server Linux. In questa guida vedremo dunque proprio come aggiornare tutti i pacchetti PHP installati all'ultima versione disponibile tramite il gestore pacchetti su distribuzioni basate su Debian/Ubuntu/Mint oppure RedHat Enterprise Linux (RHEL)/Rocky Linux/AlmaLinux/Fedora.

I comandi illustrati in questo articolo consentono di applicare rapidamente le patch di sicurezza e minor update (ad esempio il passaggio da PHP 8.5.11 a PHP 8.5.12) mantenendo però la versione principale già in uso (PHP 8.5, nell'esempio)
L'aggiornamento a un ramo principale successivo (ad esempio il salto da PHP 8.5a PHP 8.6) richiede generalmente l'abilitazione di repository dedicati e, spesso, un aggiornamento dell'applicazione PHP stessa. Questo avanzamento di versione principale non è il focus del presente articolo: svolgendo i comandi seguenti, la copia versione PHP X.Y in uso rimarrà la stessa e verranno semplicemente applicate le patch di sicurezza e le correzioni minori.
Passo 1: connessione SSH
Per prima cosa, devi connetterti in SSH al server sul quale vuoi aggiornare PHP. Abbiamo visto la procedura completa in questo approfondimento dedicato:
» Leggi: SSH con Windows, Linux, Mac: la Guida Definitiva

Passo 2: Segnare la versione di PHP attualmente in uso
Non appena connesso, è opportuno segnare quale versione di PHP sia attualmente in uso. Impartire il seguente comando:
- per Debian, Ubuntu e altre derivate:
dpkg -l | grep php - RHEL e derivate:
rpm -qa | grep -i php
Nello screenshot seguente, ad esempio, vediamo che il server monta PHP 8.5.11

È possibile che il server monti diverse versioni dell'interprete PHP (ad esempio: contemporaneamente sia il vecchio PHP 8.2, sia PHP 8.5). Questa situazione è perfettamente normale, ed è necessaria in caso lo stesso sistema eroghi diverse applicazioni web, ognuna progettata per funzionare con una versione di PHP differente.
Prendiamo nota della versione attualmente in uso. Ci servirà in seguito come "base" per confermare che l'aggiornamento sia avvenuto correttamente.
Passo 3 per Debian, Ubuntu e derivate: Aggiornare PHP
Sui sistemi che utilizzano il gestore di pacchetti APT (Debian, Ubuntu Server, Linux Mint, ecc.), possiamo sincronizzare l'indice dei pacchetti disponibili e aggiornare esclusivamente i pacchetti PHP già presenti nel sistema con un singolo comando:
sudo apt update && sudo apt install --only-upgrade 'php*' -y
È di importanza critica utilizzare proprio il flag --only-upgrade. Così facendo, APT si limita a svolgere l'aggiornamento dei pacchetti già presenti, e non installa nulla che non sia già presente.
Altrettanto importante è conservare i singoli apici attorno a 'php*': impediscono alla shell (Bash) di espandere il carattere jolly con i file eventualmente presenti nella cartella corrente, passando il pattern direttamente a APT.

Se un aggiornamento è disponibile, verrà immediatamente trovato e direttamente installato

Passo 3 per RHEL e derivate: Aggiornare PHP
Sulle distribuzioni della famiglia Red Hat che adottano il gestore pacchetti DNF (Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, CentOS Stream e Fedora), il comando da eseguire è:
sudo dnf upgrade 'php*'
Questo comando cercherà nei repository abilitati tutte le versioni più recenti dei pacchetti che iniziano per php attualmente installati sul server e ne applicherà l'avanzamento, chiedendo conferma prima di scaricare e installare le dipendenze aggiornate.
Passo 4: verificare l'aggiornamento del pacchetto
Impartiamo ora nuovamente il comando per verificare la/le versioni di PHP installate:
- per Debian, Ubuntu e altre derivate:
dpkg -l | grep php - RHEL e derivate:
rpm -qa | grep -i php
Se un aggiornamento era disponibile ed è stato installato, noteremo l'avanzamento di versione rispetto al comando impartito all'inizio

Passo 5 con PHP-FPM (nginx): riavviare il servizio
Una volta completata l'installazione dei pacchetti aggiornati, le modifiche non saranno attive finché il processo in memoria non verrà riavviato.
Se PHP è in esecuzione tramite il moderno PHP-FPM (è l'unica modalità supportata, se il server web è nginx), il comando per il riavvio è:
- per Debian, Ubuntu e altre derivate:
sudo systemctl restart php8.5-fpm && sudo systemctl status php8.5-fpm --no-pager - RHEL e derivate:
sudo systemctl restart php-fpm && sudo systemctl status php-fpm --no-pager -l
Da notare che, su Debian, Ubuntu e altre derivate, il comando include la versione di PHP (nell'esempio: php8.5-fpm): è quindi necessario esplicitarla.
È importante verificare che il secondo comando (concatenato al riavvio) restituisca l'indicazione active (running), segno che il riavvio ha avuto successo

La nuova versione è già operativa: non è necessario riavviare il server web.
Passo 5 con mod_php (Apache HTTP Server): riavviare il servizio
Se il server web impiega invece Apache HTTP Server e la vetusta configurazione con mod_php, è sufficiente riavviare direttamente il server web:
- per Debian, Ubuntu e altre derivate:
sudo systemctl restart apache2 && sudo systemctl status apache2 --no-pager - RHEL e derivate:
sudo systemctl restart httpd && sudo systemctl statushttpd --no-pager -l
Verifica finale
Ora dovrebbe essere tutto pronto. Prima di uscire a festeggiare, apriamo il browser per verificare che i nostri siti o applicazioni web rispondano correttamente, senza errori 500 o problemi di moduli mancanti.