PHP 8.5 è una versione stabile e adatta all'uso in produzione. Tuttavia, la decisione di passare immediatamente a questa versione nel proprio hosting dipende dal CMS, dai plugin, dalle dipendenze di Composer, dai processi in background e dall'effettivo runtime di PHP. Prova prima il cambiamento nell'ambiente di staging, analizza gli avvisi e i log e tieni pronta una versione precedente. A partire da PHP 8.4, la verifica è più gestibile; per le versioni di partenza più vecchie, occorre tenere conto anche di tutte le migrazioni precedentemente saltate.
Come inquadrare correttamente PHP 8.5 nell'hosting
PHP 8.5 è disponibile dal 20 novembre 2025 come versione minore stabile della serie PHP 8. Secondo il calendario ufficiale, il supporto regolare per la correzione dei bug e la sicurezza durerà fino al 31 dicembre 2027; gli aggiornamenti di sicurezza critici sono previsti fino al 31 dicembre 2029. Pertanto, la versione è in linea di principio rilevante per gli ambienti di hosting produttivi, ma la sua disponibilità non rende automaticamente la migrazione priva di rischi.
Per i siti web e gli shop basati su CMS, non è solo il PHP a determinare l’idoneità. Anche la versione del CMS installata, il tema, i plugin, i moduli dello shop e i servizi collegati devono supportare il runtime scelto. Un’applicazione sottoposta a manutenzione può quindi essere un buon candidato per un passaggio pianificato; nel caso di estensioni non sottoposte a manutenzione, è innanzitutto determinante lo stato del produttore.
Nel caso di sviluppi interni, l'aggiornamento riguarda anche le dipendenze e il codice proprio. PHP 8.5 introduce modifiche al linguaggio, alla libreria standard e al comportamento. La documentazione ufficiale sulla migrazione raccomanda di testare le applicazioni prima di effettuare il passaggio all’ambiente di produzione. Ciò vale anche nel caso in cui, a un primo esame superficiale, il sito web sembri funzionare correttamente.
Le nuove versioni di PHP possono migliorare la gestibilità nel lungo periodo, ma non sostituiscono né gli aggiornamenti dell’applicazione né una strategia di sicurezza. Allo stesso modo, il cambio di versione non comporta alcuna garanzia generale in termini di prestazioni. I tempi di risposta dipendono, tra l’altro, dal codice dell’applicazione, dagli accessi al database, dalla cache, dalle estensioni attivate e dalle risorse concrete dell’ambiente di hosting.
Quando è opportuno eseguire un aggiornamento di PHP
Chi utilizza già PHP 8.4 e gestisce un’applicazione aggiornata regolarmente può testare PHP 8.5 in modo mirato in un ambiente di prova. Questo passaggio si concentra sulle modifiche apportate dalla versione 8.4 alla 8.5. Fissare una data precisa dopo il superamento del test garantisce maggiore sicurezza rispetto a un passaggio improvviso nell’ambiente di produzione.
La situazione è diversa per PHP 8.3, 8.2 o versioni ancora più vecchie. In questi casi, tutte le modifiche apportate nelle versioni saltate continuano ad essere valide. Non è quindi sufficiente limitarsi a leggere le note di migrazione relative a PHP 8.5: anche le funzioni rimosse, i messaggi di errore modificati e le deprecazioni derivanti da precedenti salti di versione possono influire su estensioni o sviluppi personalizzati.
In caso di situazione poco chiara riguardo ai plugin o ai moduli, attendere una versione PHP compatibile e ancora supportata è spesso la scelta più prudente. Ciò non significa rinunciare alla manutenzione: verifica le indicazioni dei produttori, gli aggiornamenti disponibili e i possibili prodotti sostitutivi. Un’estensione per il negozio online senza approvazione confermata non dovrebbe essere considerata compatibile solo perché la pagina iniziale funziona correttamente.
Per i nuovi progetti sviluppati internamente, PHP 8.5 può essere utilizzato consapevolmente come Versione minima deve essere specificata se la piattaforma di destinazione supporta tale versione. In tal caso, l’impostazione deve essere inclusa nella configurazione di Composer, nella documentazione relativa alla distribuzione e nelle impostazioni per i processi da riga di comando. Se la stessa applicazione deve funzionare anche su ambienti meno recenti, le funzionalità del linguaggio disponibili esclusivamente in PHP 8.5 non devono essere utilizzate senza un piano di compatibilità.
Il periodo di supporto rappresenta un motivo oggettivo per pianificare una migrazione, ma non sostituisce i test di compatibilità. Secondo la panoramica ufficiale, PHP 8.2 riceverà aggiornamenti di sicurezza solo fino al 31 dicembre 2026. Per le versioni precedenti, la verifica dovrebbe quindi iniziare per tempo, in particolare se sono coinvolte numerose estensioni, interfacce personalizzate o processi in background.
La compatibilità dipende dalla durata effettiva
Ciò che conta non è quale versione di PHP sia installata localmente durante lo sviluppo, bensì quale Runtime PHP che esegue effettivamente il processo in questione. Le richieste web possono utilizzare una versione diversa rispetto ai comandi CLI, alle attività Cron, ai worker di coda o alle importazioni pianificate. Verifica quindi ogni tipo di esecuzione separatamente prima di distribuire il codice con i nuovi strumenti linguistici.
L'operatore pipe |> Ecco un esempio concreto: appartiene a PHP 8.5 e non può essere analizzato in PHP 8.4 o versioni precedenti. Il processo interessato si blocca già durante la lettura del file; il codice non raggiunge quindi né una condizione né la gestione degli errori. Ciò può risultare particolarmente evidente quando solo un cronjob o un worker continua a funzionare con una versione precedente della CLI.
L'esempio mostra esclusivamente la sintassi di PHP 8.5 e non costituisce un motivo per riscrivere codice già funzionante. Le nuove funzionalità del linguaggio sono utili soprattutto per lo sviluppo di applicazioni proprietarie nuove o già in fase di revisione. Per un CMS senza personalizzazioni PHP specifiche, ciò non comporta alcun vantaggio immediato; rimangono più importanti le versioni compatibili del sistema di base, del tema e dei plugin installati.
Le dipendenze di Composer richiedono la stessa attenzione. I requisiti PHP dichiarati devono essere compatibili con l’ambiente di hosting e il fatto che l’implementazione vada a buon fine non garantisce automaticamente la compatibilità di tutti i percorsi di esecuzione. Dopo un aggiornamento, verifica quindi l’interfaccia web, le attività pianificate e le interfacce esterne. La guida ufficiale alla migrazione raccomanda espressamente di effettuare dei test prima di effettuare il passaggio da un ambiente di produzione.
Anche le differenze di configurazione possono influire sui risultati: le estensioni attivate, memory_limit, max_execution_time e i messaggi di errore non sono necessariamente identici tra il processo web e la riga di comando. Annota le versioni e le impostazioni utilizzate per ciascun ambiente. In questo modo è possibile attribuire un errore a un determinato ambiente di esecuzione o a una specifica configurazione, anziché attribuirlo genericamente a PHP 8.5.
Quali novità di PHP 8.5 contano davvero nella pratica
Le nuove funzionalità di PHP 8.5 sono particolarmente interessanti per le applicazioni proprietarie e le librerie in fase di sviluppo attivo. Un CMS, un negozio online o un plugin non migliorano automaticamente solo per il fatto di passare a questa versione, semplicemente perché l’ambiente di esecuzione offre nuove API. Ciò che conta è se il progetto necessita di una semplificazione concreta e se la versione minima specificata supporta PHP 8.5.
Il sito Operatore di tubazioni |> passa un valore a sinistra a un'espressione callable successiva. In questo modo, le fasi di elaborazione possono rimanere leggibili da sinistra a destra, ad esempio durante la pulizia e la trasformazione di un titolo. Tuttavia, questa sintassi può essere analizzata solo da PHP 8.5. Pertanto, non deve essere inclusa nel codice distribuito se i server web, la CLI o i worker funzionano ancora con PHP 8.4 o versioni precedenti.
Le funzioni array_first() e array_last() restituiscono rispettivamente il primo e l'ultimo elemento di un array e, nel caso di un array vuoto, restituiscono null Indietro. Ciò può semplificare il codice delle applicazioni di piccole dimensioni. Le librerie che supportano più versioni di PHP devono tuttavia continuare a disporre di un’alternativa compatibile oppure dichiarare espressamente PHP 8.5 come versione minima. Non è necessario riscrivere il codice funzionante solo per queste API.
| Novità | Possibili utilizzi | Versione minima | Limite pratico |
|---|---|---|---|
| Operatore di pipa |> | Integrare diverse fasi di lavorazione in soluzioni sviluppate internamente | PHP 8.5 | Il codice non è analizzabile nelle versioni precedenti del runtime |
| array_first() e array_last() | Leggere il primo o l'ultimo elemento di un array | PHP 8.5 | Gli array vuoti restituiscono zero; il supporto multiversione richiede alternative |
| Estensione URI | Analizzare e modificare in modo mirato gli URI o gli URL | PHP 8.5 | L'analisi sintattica non sostituisce la verifica delle autorizzazioni o degli indirizzi di destinazione |
Il sito Estensione URI Fornisce interfacce per l'elaborazione e la modifica degli URI secondo la RFC 3986 e lo standard URL del WHATWG. Ciò risulta utile quando un'applicazione sviluppata internamente compone o normalizza gli URL in modo strutturato. Non sostituisce automaticamente né la logica URL esistente né un controllo di sicurezza: in caso di richieste esterne, gli host di destinazione consentiti, le autorizzazioni, i timeout e la protezione contro le richieste indesiderate lato server devono continuare a essere implementati in base alle specifiche dell'applicazione.
Passare a PHP 8.5 nell'hosting
Una migrazione controllata inizia prima del passaggio nel pannello di controllo dell'hosting. Crea un backup utilizzabile dei file, del database e delle impostazioni rilevanti e imposta un via di fuga In sintesi: chi conosce la versione precedente di PHP, la procedura di ripristino e l'intervallo di tempo corrispondente, può reagire in modo adeguato in caso di errore. La documentazione sulla migrazione di PHP raccomanda di testare le applicazioni prima di metterle in produzione.
A tal fine, utilizza una copia di prova oppure Messa in scena-Ambiente, se disponibile. Verifica non solo la versione di PHP visibile nel browser, ma anche i tempi di esecuzione degli script da riga di comando, delle attività cron e dei worker di manutenzione. Le dipendenze di Composer, il core del CMS, il tema e le estensioni devono corrispondere alla versione selezionata. In caso contrario, versioni PHP diverse tra l’ambiente di distribuzione e il processo in background potrebbero causare errori con un certo ritardo.
Durante il test, esamina i log degli errori e registra i passaggi riproducibili relativi a ogni risultato rilevato. In particolare, i messaggi di avviso e di attenzione provenienti dalle estensioni non dovrebbero essere considerati affrettatamente innocui: potrebbero indicare interfacce che verranno rimosse in futuro o una configurazione errata. Verifica inoltre quali estensioni sono effettivamente caricate e quali limiti sono in vigore; i valori predefiniti documentati non corrispondono necessariamente al file php.ini effettivo di un determinato ambiente di hosting.
- Verificare la registrazione, l'invio dei moduli, il caricamento dei file multimediali e la ricerca utilizzando dati di prova realistici.
- Nel negozio: simulare il carrello, il checkout, l’integrazione dei pagamenti e delle spedizioni, nonché le e-mail relative agli ordini.
- Eseguire attività Cron, code o altri worker e monitorare le interfacce con i servizi esterni.
Pianifica il passaggio in produzione solo dopo questo blocco di test e scegli una finestra temporale in cui sia possibile monitorarne gli effetti. Successivamente, controlla nuovamente i log e i processi più importanti, invece di limitarti ad aprire la pagina iniziale. La possibilità di personalizzare, ad esempio, il limite di memoria, il tempo massimo di esecuzione o le estensioni PHP aggiuntive dipende dal piano tariffario e dal provider. Questi fattori, così come le risorse di CPU e memoria, devono essere valutati separatamente dalla versione di PHP; per ulteriori approfondimenti, consulta l’articolo su Hardware per il web hosting rilevante ai fini delle prestazioni.
Valutare le funzionalità deprecate nel codice e nei pacchetti
A Avviso di obsolescenza In PHP 8.5 si tratta in genere di un avviso di migrazione, non di un'interruzione immediata della produzione. Il codice interessato può continuare a funzionare, ma deve essere preparato per una successiva rimozione. Tuttavia, se gli avvisi vengono emessi nelle pagine HTML o nelle risposte JSON, il layout, i risultati delle API o le intestazioni HTTP già impostate potrebbero risentirne. È quindi opportuno individuarli nei test e risolverne la causa.
Tra i modelli interessati figurano le grafie non canoniche di "cast" come (boolean) oppure (integer), i backtick come forma abbreviata di shell_exec() nonché un punto e virgola al posto dei due punti dopo case. Sono rilevanti anche null come offset dell'array oppure in caso di array_key_exists(). In un codice proprio e di dimensioni contenute, è solitamente possibile correggere in modo mirato l'ortografia errata.
Nel caso di pacchetti di terze parti, la ricerca e la sostituzione “alla cieca” sono rischiose. I framework, gli ORM, i container di iniezione delle dipendenze e gli strumenti di test utilizzano spesso la riflessione; eventuali chiamate obsolete come Reflection*::setAccessible() possono quindi derivare da una dipendenza. Aggiorna prima il Dipendenze di Composer entro i limiti di versione documentati, per poi ripetere il test. Solo se non è disponibile alcun aggiornamento, l'applicazione dovrebbe valutare l'utilizzo di un'alternativa, una patch fornita dal produttore o il mantenimento temporaneo di un ambiente di esecuzione compatibile.
Merita particolare attenzione il modulo PDO-DSN uri:, che in PHP 8.5 è considerata obsoleta. L'RFC corrispondente evidenzia i rischi per la sicurezza nel caso in cui i DSN possano essere influenzati tramite URI non attendibili o remoti, nonché possibili accessi durante l'instaurazione della connessione. Questo non è un motivo per trasferire le credenziali di accesso in URL o file. Verifica piuttosto se i dati di connessione provengono da una configurazione controllata e in che modo il pacchetto utilizzato fornisce un DSN supportato.
La soppressione globale degli errori non fa altro che rimandare il problema al futuro e complica la preparazione alle versioni successive di PHP. Per questo motivo, è opportuno dare priorità agli avvisi in base alla loro portata: innanzitutto i percorsi vicini all’ambiente di produzione, come il checkout, il login, le interfacce e il cron, e successivamente le funzioni amministrative utilizzate raramente. In questo modo è possibile capire se un errore proviene dal proprio codice, è causato da un plugin o riguarda semplicemente una dipendenza di sviluppo non utilizzata.
Rilevare gli errori in modo affidabile e interpretarli correttamente
Dopo il passaggio a PHP 8.5, i log degli errori forniscono informazioni più significative rispetto a una rapida occhiata alla pagina iniziale. PHP 8.5 è in grado di fornire stack trace più dettagliate in caso di errori fatali, ad esempio quando viene superato il tempo massimo di esecuzione. Ciò facilita l’attribuzione a un file e a un percorso di chiamata, ma non elimina né i cicli infiniti né le query lente al database né i tempi di attesa esterni.
Per ottenere una diagnosi utile, registra il momento in cui si è verificato l'errore, l'URL o l'azione richiamata, lo stato dell'utente connesso e i passaggi che hanno portato all'errore. Ripeti prima la procedura su un ambiente di test, se possibile con la stessa configurazione e le stesse versioni delle estensioni. In questo modo è possibile distinguere se la causa risiede nell’aggiornamento di PHP, in un’estensione o in un dato specifico inserito dall’utente.
In un ambiente di test, la Messaggio di errore aiutare a individuare le cause. Nell’ambito dell’uso pubblico, tuttavia, i dettagli tecnici devono essere riportati in log protetti e non nell’output del browser. I messaggi visibili possono rivelare percorsi di file, nomi di classi, estensioni utilizzate o parti di uno stack trace. Le impostazioni effettivamente applicabili dipendono dalla configurazione PHP specifica; i valori predefiniti documentati potrebbero non corrispondere a quelli di un ambiente di hosting.
Un timeout è quindi un dato di rilevamento, non una soluzione. Verifica innanzitutto se l’errore si verifica ad ogni richiamo o solo in occasione di una determinata ricerca, importazione o interfaccia. Successivamente, è possibile considerare come cause distinte il codice dell’applicazione, le query al database, i servizi esterni e il tempo di esecuzione consentito. Aumentare semplicemente il limite di tempo impostato nell’hosting può mascherare i sintomi ed è utile solo dopo aver individuato la causa.
- Pagina bianca o errore HTTP 500: confrontare i timestamp nei log di PHP e del server web con la richiesta riproducibile.
- Importazione o esecuzione cron interrotta: verificare la durata, l'utilizzo della memoria, la quantità di dati in ingresso e gli errori del rispettivo processo in background.
- Errori che si verificano solo dopo aver effettuato l'accesso o durante il checkout: verificare le estensioni interessate e l'intera procedura, compresi i collegamenti alle e-mail e ai pagamenti.
- Output inaspettato o JSON non valido: individuare avvisi e elementi deprecati prima di inviare header o risposte API.
Verifica delle intestazioni HTTP e dei processi in background
Il codice che effettua richieste HTTP merita un controllo mirato al momento dell'aggiornamento. La variabile $http_response_header è obsoleta in PHP 8.5. Conteneva gli header di risposta di una richiesta effettuata tramite l'HTTP-Wrapper e veniva creata nell'ambito locale in cui avveniva la richiesta. Il codice al di fuori di una funzione non poteva quindi accedere automaticamente agli header generati all'interno della funzione.
A partire da PHP 8.4 è disponibile http_get_last_response_headers() come alternativa. La funzione restituisce le intestazioni ricevute per ultime oppure null , se non ce ne sono disponibili. Per i progetti che devono ancora funzionare con PHP 8.3, è necessario verificare la versione; per un progetto in cui è obbligatorio l'uso di PHP 8.4 o versioni successive, è possibile utilizzare direttamente la nuova API.
Il codice di transizione riportato di seguito tiene conto di entrambi i casi. Presuppone che la richiesta stessa sia consentita dal modello applicativo; non sostituisce né i timeout né la gestione degli errori né una limitazione degli indirizzi di destinazione consentiti. Soprattutto nel caso di URL inseriti dall'utente, è necessario verificare le autorizzazioni e gli host consentiti indipendentemente dall'analisi delle intestazioni.
Non verificare questa modifica solo nella richiesta web. Lavori in background Elementi quali le attività Cron, i worker della coda, gli script di importazione e i comandi CLI possono utilizzare un file binario PHP diverso da quello del sito web. Ciò consente anche l’utilizzo di estensioni e valori di configurazione diversi. Determina la versione effettiva di PHP per ogni percorso di esecuzione ed esegui i processi interessati in modo controllato dopo la migrazione.
Dopo l'aggiornamento, monitorare e decidere
Dopo la migrazione, ha inizio il controllo operativo post-migrazione. Monitora i log degli errori e i processi chiave definiti in precedenza per un periodo di utilizzo adeguato: accessi, moduli, ordini, invio di e-mail, interfacce e attività pianificate. Presta attenzione a nuovi avvisi, errori fatali ricorrenti e processi interrotti. Singole chiamate di test effettuate immediatamente dopo il passaggio non rilevano necessariamente le funzioni temporizzate o utilizzate raramente.
Anche i tempi di risposta e i messaggi relativi alle risorse necessitano di un contesto. La versione di PHP è solo uno dei fattori, insieme al codice dell’applicazione, al database, alla cache, all’OPcache, a PHP-FPM, alle estensioni attivate e alle risorse disponibili di CPU e memoria. PHP 8.5 non rappresenta quindi una garanzia generale di prestazioni. Solo le misurazioni effettuate con flussi di lavoro comparabili dimostrano se un comportamento osservato sia effettivamente cambiato.
In particolare, limiti quali memory_limit e max_execution_time dovrebbero essere ricavati dall'ambiente reale, anziché basarsi su valori riportati nei manuali. Lo stesso vale per le estensioni attivate e la gestione dei processi. La documentazione descrive i valori possibili o predefiniti, mentre il piano di hosting e la configurazione del server determinano ciò che un'applicazione trova effettivamente.
Chi desidera analizzare le questioni relative alle prestazioni separatamente dalla migrazione alla nuova versione dovrebbe prendere in esame PHP-FPM, OPcache e l'applicazione con valori di misurazione tracciabili. L'articolo interno su Il ruolo del JIT di PHP nel web hosting spiega perché i percorsi di codice che comportano un carico elevato sulla CPU debbano essere valutati in modo diverso rispetto alle richieste legate al database o alla rete. Una modifica alla configurazione dovrebbe essere effettuata solo dopo aver effettuato una misurazione iniziale riproducibile.
La decisione deriva dalla seguente constatazione: se un’applicazione ben mantenuta, comprese le estensioni, funziona senza errori nell’ambiente di test, è opportuno procedere al passaggio pianificato a PHP 8.5. Se per un plugin critico manca l’approvazione o è presente un errore non spiegato, la versione di PHP di comprovata compatibilità rimane la soluzione provvisoria più sicura. Nel caso di versioni di partenza più vecchie, anziché un passaggio isolato alla versione 8.5, è necessaria una migrazione più completa che tenga conto di tutte le indicazioni di migrazione tralasciate.
Fonti e stato dell'arte
Stato della ricerca:
Aggiornato al: 18 ottobre 2026. PHP 8.5 è disponibile in versione stabile dal 20 novembre 2025; le informazioni sul supporto e le indicazioni per la migrazione si basano sulla documentazione ufficiale di PHP.
https://www.php.net/supported-versions.php
https://www.php.net/manual/en/migration85.php
https://www.php.net/releases/8.5/en.php
https://www.php.net/manual/en/about.phpversions.php
https://wiki.php.net/rfc/deprecations_php_8_5
https://www.php.net/manual/en/reserved.variables.httpresponseheader.php




