Il ciclo di vita delle versioni di PHP spiegato: supporto attivo, solo sicurezza e fine vita

Come si leggono i numeri di versione, come nasce un nuovo ramo ogni anno, cosa riceve PHP nelle fasi di supporto attivo, solo sicurezza e fine vita, cosa è cambiato con la riforma del 2024 e come usare il calendario ufficiale per pianificare gli aggiornamenti.

Copertina con il logo php∞, la categoria PHP End of Life, il titolo Il ciclo di vita delle versioni di PHP e il numero 02

Chi gestisce un sito o un gestionale in PHP si trova prima o poi davanti a domande molto pratiche: fino a quando la versione che usiamo riceverà correzioni? Quando conviene pianificare il prossimo aggiornamento? Perché un ramo uscito pochi anni fa risulta già “fuori supporto” nel report di un auditor? Le risposte stanno tutte nel ciclo di vita delle versioni di PHP, che il progetto pubblica in modo chiaro ma che pochi leggono finché non diventa un problema.

In questo articolo spieghiamo come sono numerate le versioni, come nasce un nuovo ramo ogni anno, cosa succede nelle tre fasi di supporto attivo, solo sicurezza e fine vita, cosa è cambiato con la riforma del 2024 e come leggere il calendario ufficiale per pianificare gli aggiornamenti con mesi di anticipo invece che in emergenza.

Come si leggono i numeri di versione

Un numero di versione di PHP ha tre parti. Prendiamo PHP 8.3.12 come esempio:

  • 8 è la versione principale (major): cambia di rado, dopo molti anni, e porta con sé le rotture di compatibilità più profonde, come il passaggio da PHP 7 a PHP 8;
  • 8.3 è il ramo, cioè la versione minore: ne esce uno nuovo ogni anno e il ciclo di vita si calcola sempre a livello di ramo;
  • 12 è il rilascio di manutenzione (patch) dentro il ramo: contiene correzioni di bug e di sicurezza, senza nuove funzionalità.

La distinzione conta perché i due tipi di aggiornamento hanno un peso molto diverso. Passare da 8.3.11 a 8.3.12 è un’operazione di routine, da fare con regolarità. Passare da 8.3 a 8.4 significa cambiare ramo: il codice deve essere compatibile con le funzionalità rimosse o deprecate, e serve un ciclo di test sull’applicazione reale. Quando si parla di “fine del supporto” si parla sempre di un ramo intero: il giorno in cui un ramo esce dal supporto, nessun rilascio di quel ramo riceverà più correzioni.

Un nuovo ramo ogni anno

Il progetto PHP pubblica un nuovo ramo ogni anno, verso la fine di novembre. Il lavoro segue un calendario pubblico sul wiki del progetto, con una coppia o un piccolo gruppo di release manager responsabili di ciascun ramo per tutta la sua vita. Le tappe sono sempre le stesse:

  1. alpha, in estate: le prime versioni di prova, con le nuove funzionalità già approvate;
  2. beta e feature freeze: da questo momento non entrano più funzionalità nuove, solo correzioni;
  3. release candidate: versioni candidate al rilascio, una ogni due settimane, su cui la comunità e i manutentori dei framework fanno i loro test;
  4. rilascio generale (GA), la prima versione stabile del ramo, per esempio 8.4.0.

Per PHP 8.4 il feature freeze è caduto il 13 agosto 2024, la prima release candidate è uscita il 26 settembre e il rilascio stabile il 21 novembre 2024. Per PHP 8.6, che è in lavorazione mentre scriviamo, il calendario pubblicato sul wiki prevede il feature freeze definitivo il 22 settembre 2026 e il rilascio stabile il 19 novembre 2026. Sono date di pianificazione e possono spostarsi di qualche settimana se emerge un problema bloccante nelle ultime release candidate.

Le tre fasi di ogni ramo

Dal giorno del rilascio stabile parte il conto alla rovescia. Ogni ramo attraversa tre fasi, e per ciascuna è chiaro cosa riceve e cosa no.

Diagramma delle fasi di un ramo di PHP con l’esempio di PHP 8.4. In alto le tappe prima del rilascio nel 2024: feature freeze il 13 agosto, release candidate dal 26 settembre, quattro release candidate a distanza di due settimane, rilascio stabile il 21 novembre. Sotto una linea del tempo: supporto attivo di due anni dal 21 novembre 2024 al 31 dicembre 2026, solo sicurezza per altri due anni fino al 31 dicembre 2028, poi End of Life. Tre schede spiegano cosa riceve il ramo: nel supporto attivo correzioni di bug e di sicurezza in rilasci circa mensili, in sola sicurezza solo le vulnerabilità e le regressioni introdotte nei dodici mesi precedenti, in End of Life nessun rilascio ufficiale
Quattro anni di vita, divisi in due fasi di supporto: l’esempio con le date reali di PHP 8.4.

Supporto attivo

Per i primi due anni il ramo riceve correzioni di bug e di sicurezza in rilasci regolari, di norma circa una volta al mese. È la fase in cui conviene stare, perché i problemi segnalati vengono corretti, il comportamento si stabilizza e i framework e i CMS aggiungono il ramo alle versioni ufficialmente compatibili. Un ramo appena uscito però merita qualche settimana di prudenza: i primi rilasci di manutenzione correggono spesso difetti emersi solo con l’uso su larga scala.

Solo sicurezza

Nei due anni successivi il ramo riceve solo le correzioni per le vulnerabilità, e i rilasci escono quando servono: possono essercene diversi in pochi mesi oppure nessuno per un lungo periodo. I bug ordinari non vengono più corretti, con un’eccezione introdotta nel 2024: si possono correggere le regressioni causate da modifiche entrate nel ramo negli ultimi dodici mesi. In questa fase l’applicazione è ancora protetta, ma è il momento giusto per preparare il passaggio al ramo successivo.

Fine vita

Dopo quattro anni il ramo entra in End of Life e il progetto non pubblica più alcun rilascio, nemmeno per una falla critica sfruttabile da remoto. Le conseguenze pratiche di questa fase, per la sicurezza, la conformità e la gestione operativa, le abbiamo descritte in dettaglio nell’articolo su cosa significa PHP End of Life.

Cosa è cambiato nel 2024

Per molti anni la regola è stata di due anni di supporto attivo e uno di sola sicurezza, con la fine del supporto calcolata dalla data di rilascio. Con questa regola un ramo usciva il 26 novembre e il supporto finiva tre anni dopo, il 26 novembre: è esattamente quello che è successo a PHP 8.0. Nell’aprile 2024 la comunità ha approvato la RFC “Release cycle update”, che ha introdotto alcune modifiche importanti:

  • un anno in più di sola sicurezza: il ciclo completo passa da tre a quattro anni, due di supporto attivo e due di sicurezza;
  • fine allineata al 31 dicembre: le scadenze cadono sempre alla fine dell’anno, più facili da ricordare e da inserire nei budget;
  • correzione delle regressioni anche durante la fase di sola sicurezza, per le modifiche degli ultimi dodici mesi;
  • quattro release candidate invece di sei prima del rilascio stabile, senza nuove funzionalità nelle release candidate.

Le modifiche sono entrate in vigore subito per tutti i rami allora supportati, dalla 8.2 in poi, e PHP 8.1, che era già in sola sicurezza, ha ricevuto anch’esso l’anno aggiuntivo. Per questo i rami recenti hanno scadenze diverse da quelle che si leggevano negli articoli di qualche anno fa.

RamoRilascioFine del supporto attivoFine del supporto di sicurezza
PHP 8.026 novembre 202026 novembre 202226 novembre 2023
PHP 8.125 novembre 202125 novembre 202331 dicembre 2025
PHP 8.28 dicembre 202231 dicembre 202431 dicembre 2026
PHP 8.323 novembre 202331 dicembre 202531 dicembre 2027
PHP 8.421 novembre 202431 dicembre 202631 dicembre 2028
PHP 8.520 novembre 202531 dicembre 202731 dicembre 2029
Fonte: php.net, pagine dei rami supportati e dei rami non più supportati.

La riforma ha anche una nota per chi usa PHP su Windows: le librerie esterne incluse nelle build ufficiali per Windows potrebbero non essere aggiornate per tutto il periodo di sicurezza, e il progetto chiede agli utenti di seguirle in autonomia. Sui server Linux, dove PHP arriva dai pacchetti della distribuzione o di un repository, il tema non si pone negli stessi termini.

Dove siamo a settembre 2026

Applicando le regole alle date ufficiali, il quadro di questo autunno è il seguente:

  • PHP 8.0 e 8.1 sono fuori supporto, rispettivamente da novembre 2023 e da dicembre 2025;
  • PHP 8.2 è nell’ultimo trimestre di sola sicurezza: dal 1° gennaio 2027 non riceverà più correzioni ufficiali;
  • PHP 8.3 è in sola sicurezza fino alla fine del 2027;
  • PHP 8.4 è in supporto attivo fino alla fine del 2026, poi in sicurezza fino alla fine del 2028;
  • PHP 8.5 è in supporto attivo fino alla fine del 2027 e in sicurezza fino alla fine del 2029;
  • PHP 8.6 è in fase di beta, con le release candidate da fine settembre e il rilascio previsto il 19 novembre 2026.
Diagramma a barre dei rami di PHP 8 tra il 2021 e il 2030, con una linea tratteggiata a settembre 2026. PHP 8.0 è fuori supporto da novembre 2023 e PHP 8.1 da dicembre 2025. PHP 8.2 è in sola sicurezza fino alla fine del 2026, PHP 8.3 in sola sicurezza fino alla fine del 2027, PHP 8.4 in supporto attivo fino alla fine del 2026 e in sicurezza fino alla fine del 2028, PHP 8.5 in supporto attivo fino alla fine del 2027 e in sicurezza fino alla fine del 2029. PHP 8.6, con barre più chiare perché le date sono previste, esce il 19 novembre 2026 e resterebbe supportato fino alla fine del 2030
A settembre 2026 i rami supportati sono quattro, dall’8.2 all’8.5, e l’8.2 è in scadenza.

Per PHP 8.6 le date di fine supporto non sono ancora sulla pagina ufficiale, che le aggiunge al rilascio. Con la regola dei quattro anni dovrebbero essere la fine del 2028 per il supporto attivo e la fine del 2030 per la sicurezza, ma conviene sempre attendere la pubblicazione su php.net prima di inserirle in un piano.

Come leggere il calendario ufficiale

Le fonti da consultare sono due pagine di php.net. La pagina dei rami supportati mostra, per ogni ramo vivo, la data del rilascio iniziale, la fine del supporto attivo e la fine del supporto di sicurezza, insieme a un grafico colorato con la data di oggi. La pagina dei rami non più supportati elenca invece tutti i rami chiusi, con la data di fine vita e l’ultimo rilascio pubblicato: per esempio 7.4.33 per PHP 7.4 e 8.1.34 per PHP 8.1.

Il secondo dato da controllare è il rilascio di manutenzione. Essere su un ramo supportato serve a poco se il server è fermo a una patch di due anni fa. php.net espone l’ultima versione di ogni ramo anche in formato JSON, comodo da confrontare con quella installata:

# Versione installata sul server (riga di comando)
php -r 'echo PHP_VERSION, PHP_EOL;'

# Ultimo rilascio pubblicato per il ramo 8.3
curl -s 'https://www.php.net/releases/index.php?json&version=8.3' | grep -o '"version":"[^"]*"'

C’è un’avvertenza importante. Sui server Linux il numero di versione non basta, perché le distribuzioni come Debian, Ubuntu e Red Hat Enterprise Linux spesso mantengono il numero di patch con cui è uscita la release e applicano le correzioni con patch proprie, indicate nella revisione del pacchetto. Su Ubuntu 22.04, per esempio, il pacchetto di PHP 8.1 riporta ancora la versione 8.1.2, seguita da un numero di revisione che cresce a ogni correzione di sicurezza. Per capire cosa gira davvero sul server, e da quale fonte arriva, abbiamo dedicato un articolo a come scoprire quale versione di PHP stai usando.

Cosa significa per chi gestisce applicazioni in produzione

Il ciclo di quattro anni con scadenza al 31 dicembre rende la pianificazione molto più semplice di un tempo. Ogni ramo ha una data di fine nota con anni di anticipo, e il ramo successivo esce sempre a novembre, poche settimane prima di una scadenza. Da qui alcune regole pratiche:

  • aggiorna le patch con regolarità: i rilasci di manutenzione dentro lo stesso ramo vanno applicati come gli aggiornamenti di sicurezza del sistema operativo, senza aspettare;
  • scegli il ramo di arrivo guardando la sua scadenza: con un’applicazione che si aggiorna raramente conviene il ramo più recente compatibile con CMS, framework e librerie, così da avere più anni davanti;
  • pianifica il cambio di ramo durante la fase di sola sicurezza: è la finestra in cui l’applicazione è ancora protetta e c’è il tempo di testare senza pressione;
  • allinea il calendario di PHP a quello del sistema operativo: la versione inclusa nella distribuzione e la sua durata possono essere diverse da quelle del progetto, in entrambe le direzioni;
  • metti le scadenze nel budget: una migrazione di ramo ogni due o tre anni è un costo prevedibile, una migrazione d’urgenza dopo anni di ritardo no.

Chi oggi è su PHP 8.2 ha davanti l’ultimo trimestre di supporto, e ne parleremo nel dettaglio nell’articolo dedicato. Chi è già su un ramo chiuso ha due strade da combinare: proteggere la produzione con pacchetti ancora mantenuti o con il backport delle patch, e pianificare la migrazione verso un ramo supportato.

Riassumendo

PHP pubblica un nuovo ramo ogni anno, a fine novembre, dopo un percorso pubblico di alpha, beta e release candidate. Dalla riforma approvata nel 2024 ogni ramo ha due anni di supporto attivo, con correzioni di bug e di sicurezza, e due anni di sola sicurezza, con scadenza sempre al 31 dicembre; poi entra in End of Life e non riceve più nulla. A settembre 2026 sono supportati i rami dall’8.2 all’8.5, con l’8.2 in chiusura alla fine dell’anno e l’8.6 in arrivo a novembre. Le date ufficiali sono su php.net e vanno lette insieme a due dati concreti del server: il rilascio di manutenzione installato e chi mantiene il pacchetto. Con queste informazioni il cambio di ramo diventa un’attività pianificata, da fare durante la fase di sola sicurezza invece che dopo la scadenza.

IL PROSSIMO PASSO

Mettiamo
in sicurezza.

Indicaci versione di PHP, sistema operativo e cosa ti preoccupa. Ti risponderemo con una valutazione dell’esposizione e una proposta di intervento.

Richiedi supporto

Ti porta al modulo di richiesta, in quattro passi.

PHP LEGACY · MANAGED SERVER S.R.L.info@phplegacy.it +39 02 5656 9681

Lunedì – venerdì · 09:30 – 19:30

Urgenza in corso? Reperibilità H24
+39 340 985 4556 ↗