Guide

PHP 8.1 è morto da gennaio: come scoprirlo e migrare a 8.3 senza rompere il sito

PHP 8.1 non riceve più patch di sicurezza dal 31 dicembre 2025. Guida per trovarlo sui server e passare a PHP 8.3 su Ubuntu senza fermare i siti.

Redazione UptimeMag · 12 ottobre 2026 · 3 minuti di lettura

PHP 8.1 è morto da gennaio: come scoprirlo e migrare a 8.3 senza rompere il sito

Se gestisci un server LAMP o LEMP ereditato da qualcun altro, la data da segnare è il 31 dicembre 2025: secondo la pagina ufficiale php.net/eol.php, il branch 8.1 ha raggiunto l'end-of-life quel giorno, con l'ultima release 8.1.34. Da allora nessuna patch di sicurezza, nessun bugfix. Se un sito gira ancora su 8.1, ogni vulnerabilità scoperta da gennaio in poi resta aperta per sempre, a meno di supporto commerciale esterno.

La tabella delle versioni attualmente supportate, sempre da php.net/supported-versions.php, è questa:

Branch Rilascio iniziale Supporto attivo fino a Supporto sicurezza fino a
8.2 8 dic 2022 31 dic 2024 31 dic 2026
8.3 23 nov 2023 31 dic 2025 31 dic 2027
8.4 21 nov 2024 31 dic 2026 31 dic 2028
8.5 20 nov 2025 31 dic 2027 31 dic 2029

Questa guida copre il caso più comune per chi legge UptimeMag: server Ubuntu 22.04 o 24.04 con PHP 8.1, destinazione PHP 8.3 (ultimo branch con supporto sicurezza fino al 2027 e già maturo per produzione).

1. Verificare la versione attiva

Da riga di comando:

php -v

Se il server gira con PHP-FPM dietro Nginx, controlla anche il processo FPM in esecuzione:

systemctl status php8.1-fpm

Per un singolo sito via browser, basta una pagina con <?php phpinfo(); ?> caricata e poi cancellata subito dopo (non lasciarla online, è un classico modo di farsi fingerprintare da uno scanner).

Su pannelli di hosting: in cPanel la versione PHP per dominio si vede in "MultiPHP Manager"; in Plesk sotto "PHP Settings" della scheda del dominio.

2. Trovare tutti i siti ancora su 8.1 su un server condiviso

Su Apache con mod_php o FPM per-vhost, cerca nei file di configurazione:

grep -rl "php8.1" /etc/apache2/sites-enabled/
grep -rl "php8.1" /etc/nginx/sites-enabled/

Su un server con più pool FPM, elenca i socket attivi:

ls -la /run/php/ | grep 8.1

Su cPanel con più domini, il comando whmapi1 php_get_vhost_versions restituisce l'elenco versione-per-dominio (richiede accesso WHM). Su Plesk, plesk bin domain --list seguito da plesk bin site --info <dominio> mostra la versione PHP assegnata a ciascun sito.

3. Installare PHP 8.3 accanto a 8.1

Ubuntu 22.04 (jammy) e 24.04 (noble) non includono PHP 8.3 nei repository ufficiali con la stessa comodità per tutte le estensioni: il modo pratico resta il repository di terze parti mantenuto da Ondřej Surý, che infatti pubblica i pacchetti PHP 8.3 sia per jammy sia per noble.

sudo apt install software-properties-common ca-certificates apt-transport-https lsb-release -y
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3 php8.3-fpm php8.3-cli php8.3-common

Le due versioni, 8.1 e 8.3, convivono sullo stesso sistema: i file di configurazione restano separati (/etc/php/8.1/ e /etc/php/8.3/), così come i socket FPM.

4. Verificare le estensioni prima del cutover

Prima di spostare il vhost, confronta i moduli caricati:

php8.1 -m > moduli-81.txt
php8.3 -m > moduli-83.txt
diff moduli-81.txt moduli-83.txt

Installa su 8.3 i pacchetti delle estensioni che mancano (sintassi php8.3-nomeestensione, es. php8.3-mysqli php8.3-gd php8.3-curl php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath), poi ripeti il confronto finché il diff è vuoto o contiene solo differenze attese.

Controlla anche il codice applicativo contro le deprecazioni introdotte nel salto 8.2→8.3: la documentazione ufficiale di migrazione segnala, tra l'altro, che chiamare get_class() o get_parent_class() senza argomenti è ora deprecato, e che l'uso dell'operatore di incremento su stringhe vuote o non numeriche è deprecato. Sono deprecazioni, non rimozioni: il sito continua a funzionare ma scrive warning nei log, da ripulire con calma dopo il cutover.

5. Cutover e rollback

Cambia il socket nel vhost (Apache con proxy_fcgi o Nginx con fastcgi_pass) da /run/php/php8.1-fpm.sock a /run/php/php8.3-fpm.sock, poi:

sudo nginx -t && sudo systemctl reload nginx

Tieni 8.1-fpm attivo e il vhost precedente salvato con un altro nome file: se il sito risponde 500, basta rimettere il vecchio socket e ricaricare, senza reinstallare nulla. Solo dopo una settimana senza errori in /var/log/nginx/error.log ha senso disinstallare php8.1-fpm con apt remove.

Fonti: php.net/supported-versions.php, php.net/eol.php, documentazione ufficiale PHP sulla migrazione 8.2→8.3, repository ppa:ondrej/php.

Testo redatto con il supporto dell'intelligenza artificiale e verificato dalla redazione (AI Act, art. 50).