Eseguire una versione obsoleta di PHP è uno dei più grandi errori in termini di prestazioni e sicurezza che puoi commettere con un sito WordPress. PHP è il linguaggio che alimenta WordPress e ogni nuova versione porta miglioramenti misurabili della velocità, patch di sicurezza e nuove funzionalità del linguaggio su cui plugin e temi fanno affidamento. Se il tuo hosting esegue ancora PHP 7.4 o anche PHP 8.0, stai lasciando sul tavolo prestazioni ed esponi il tuo sito a vulnerabilità note che non verranno mai più corrette.
Perché la tua versione di PHP è importante per WordPress
PHP non è solo un dettaglio di sfondo. Influisce direttamente sulla velocità di caricamento delle tue pagine, su quanta memoria utilizza il tuo server e se i tuoi plugin possono persino funzionare. Ogni grande release di PHP include ottimizzazioni interne del Zend Engine (il runtime che esegue il codice PHP), e queste ottimizzazioni si accumulano nel tempo. Un sito WordPress che gira su PHP 8.3 gestisce più richieste al secondo, utilizza meno memoria per richiesta e risponde più velocemente dello stesso sito su PHP 7.4.
Oltre alle prestazioni, c'è l'aspetto della sicurezza. PHP 7.4 ha raggiunto il suo end-of-life (EOL) ufficiale a novembre 2022. PHP 8.0 ha raggiunto l'EOL a novembre 2023. PHP 8.1 ha raggiunto l'EOL a dicembre 2025. Una volta che una versione raggiunge l'EOL, il team di PHP smette completamente di rilasciare patch di sicurezza. Se viene scoperta una vulnerabilità critica in una versione EOL, non verrà mai più corretta. Il tuo provider di hosting potrebbe fare il backport di alcune patch, ma non dovresti farci affidamento.
Confronto tra le versioni di PHP: prestazioni e funzionalità
Di seguito una panoramica pratica delle principali versioni di PHP che incontrerai sull'hosting WordPress:
- PHP 7.4 (EOL novembre 2022): l'ultima release della linea PHP 7.x. All'epoca era una versione solida, ma manca delle typed properties, dei union types, delle fibers e dei guadagni di prestazioni di PHP 8.x. WordPress 6.4+ raccomanda ufficialmente PHP 8.0 o superiore. Molti plugin più recenti hanno abbandonato completamente il supporto per PHP 7.4.
- PHP 8.0 (EOL novembre 2023): ha introdotto il compilatore JIT (Just-In-Time), argomenti denominati, union types, espressioni match e operatori nullsafe. Il compilatore JIT non migliora drasticamente i tipici carichi di lavoro WordPress (che sono I/O-bound piuttosto che CPU-bound), ma le ottimizzazioni generali del motore offrono comunque un guadagno di velocità del 5-10% rispetto a PHP 7.4.
- PHP 8.1 (EOL dicembre 2025): ha aggiunto le fibers (utilizzate dalle nuove librerie asincrone), enum, readonly properties e intersection types. WordPress core ha pieno supporto. La maggior parte dei plugin ben mantenuti funziona perfettamente su 8.1.
- PHP 8.2 (correzioni di sicurezza fino a dicembre 2026): ha introdotto le readonly classes, ha reso obsolete le proprietà dinamiche (causando la generazione di avvisi di deprecazione da parte di alcuni plugin più vecchi) e ha migliorato il generatore di numeri casuali. Questa è una buona versione target se vuoi stabilità con supporto di sicurezza continuo.
- PHP 8.3 (supporto attivo fino a dicembre 2026, correzioni di sicurezza fino a dicembre 2027): ha aggiunto costanti di classe tipizzate, la funzione json_validate() e diversi miglioramenti delle prestazioni. Questa è attualmente la versione raccomandata per le nuove installazioni di WordPress, poiché ha il più lungo periodo di supporto residuo e le migliori prestazioni.
Benchmark delle prestazioni: come appaiono i numeri nella realtà
Nei benchmark WordPress reali (testati con un'installazione WooCommerce standard, 20 plugin attivi e un tema come Astra), le differenze tra le versioni di PHP sono significative:
- PHP 7.4: gestisce circa 90-100 richieste al secondo, con un tempo di risposta medio di circa 250 ms.
- PHP 8.0: gestisce circa 100-115 richieste al secondo, tempo di risposta medio intorno ai 220 ms.
- PHP 8.1: gestisce circa 110-120 richieste al secondo, tempo di risposta medio intorno ai 210 ms.
- PHP 8.2: gestisce circa 115-125 richieste al secondo, tempo di risposta medio intorno ai 200 ms.
- PHP 8.3: gestisce circa 120-135 richieste al secondo, tempo di risposta medio intorno ai 190 ms.
Questi numeri variano a seconda dell'ambiente di hosting, ma la tendenza è costante: ogni versione di PHP è misurabilmente più veloce della precedente. Un upgrade da PHP 7.4 a 8.3 produce tipicamente un miglioramento del 25-35% nelle richieste al secondo.
Prima di aggiornare: la checklist pre-upgrade
- Fai un backup completo: esegui il backup sia del database che dei file. Usa UpdraftPlus, BackWPup o lo strumento di backup integrato del tuo provider di hosting. Non saltare questo passaggio. Se qualcosa va storto, devi essere in grado di ripristinare il tuo sito in pochi minuti.
- Verifica la compatibilità di plugin e temi: installa il plugin "PHP Compatibility Checker" di WP Engine. Esegue la scansione dei tuoi plugin e file di tema per chiamate di funzioni obsolete o rimosse nelle nuove versioni di PHP. Presta attenzione ai risultati "ERROR", poiché causano errori fatali. I risultati "WARNING" di solito attivano solo avvisi di deprecazione che non interrompono la funzionalità.
- Consulta le guide alla migrazione di PHP: la documentazione ufficiale di PHP pubblica guide alla migrazione per ogni versione (php.net/migration80, php.net/migration81, ecc.). Queste elencano ogni breaking change. Non devi leggere l'intera guida, ma rivedi la sezione "Backward Incompatible Changes".
- Usa un ambiente di staging: se il tuo provider di hosting offre staging (Kinsta, WP Engine, SiteGround e la maggior parte degli host gestiti lo fanno), clona il tuo sito di produzione in staging e testa lì prima l'upgrade di PHP. Questo è il passaggio più importante per evitare downtime.
- Aggiorna prima tutti i plugin e i temi: prima di cambiare la versione di PHP, assicurati che ogni plugin e tema stia eseguendo la sua ultima versione. Gli sviluppatori rilasciano regolarmente aggiornamenti che aggiungono compatibilità con le nuove versioni di PHP.
Come cambiare la tua versione di PHP
Hosting cPanel (la maggior parte degli host condivisi)
- Accedi al tuo dashboard cPanel.
- Cerca "Select PHP Version" (CloudLinux) o "MultiPHP Manager" (cPanel nativo). Il nome dipende dalla configurazione del tuo provider di hosting.
- Se stai usando MultiPHP Manager, seleziona il tuo dominio nella lista, scegli la nuova versione di PHP dal menu a discesa e clicca su "Apply".
- Se stai usando Select PHP Version, vedrai la versione corrente in alto. Clicca sul menu a discesa, seleziona la nuova versione e conferma. Questa interfaccia ti permette anche di abilitare o disabilitare le singole estensioni PHP.
Hosting Plesk
- Accedi a Plesk e vai a Websites & Domains.
- Clicca sul dominio che vuoi aggiornare.
- Clicca su PHP Settings (o "PHP Version" a seconda della tua versione di Plesk).
- Seleziona la nuova versione di PHP dal menu a discesa e clicca su "Apply" o "OK".
- Plesk ti permette anche di configurare le impostazioni PHP (memory_limit, max_execution_time, ecc.) nella stessa pagina.
Hosting WordPress gestito
Gli host gestiti rendono tipicamente facile il cambio della versione di PHP:
- Kinsta: vai a Sites, seleziona il tuo sito, clicca su Tools, trova "PHP Engine" e seleziona la nuova versione.
- WP Engine: vai a Sites, seleziona il tuo ambiente, clicca su Overview e trova l'impostazione della versione PHP. WP Engine ha anche un PHP Compatibility Checker integrato nel loro dashboard.
- SiteGround: vai a Site Tools e poi a PHP Manager nella sezione Devs. Puoi impostare la versione PHP per cartella se necessario.
- Cloudways: vai a Server Management, Settings & Packages e poi alla scheda Packages. Cambia la versione di PHP lì (questo influenza l'intero server).
Errori comuni dopo l'upgrade di PHP
Se il tuo sito mostra errori dopo un upgrade di PHP, non farti prendere dal panico. Ecco i problemi più comuni e le loro soluzioni:
Fatal Error: Uncaught Error (funzione non trovata)
Questo accade quando un plugin o tema usa una funzione PHP rimossa nella nuova versione. Esempi comuni includono create_function() (rimossa in PHP 8.0), each() (rimossa in PHP 8.0) e le funzioni mysql_* (rimosse da PHP 7.0). La soluzione è aggiornare il plugin o il tema che causa l'errore. Controlla il messaggio di errore per il percorso del file per identificare quale plugin è responsabile.
Avvisi di deprecazione che riempiono il tuo log degli errori
PHP 8.2 ha reso obsolete le proprietà dinamiche (impostare proprietà non dichiarate sugli oggetti), causando un'ondata di avvisi di deprecazione in molti plugin più vecchi. Questi avvisi non rompono il tuo sito, ma possono rallentarlo se la registrazione degli errori è estesa. Aggiorna i plugin interessati o, se un plugin è stato abbandonato, considera di sostituirlo con un'alternativa.
White Screen of Death
Uno schermo completamente vuoto di solito significa che si è verificato un errore fatale, ma la visualizzazione degli errori è disabilitata. Abilita temporaneamente la visualizzazione degli errori aggiungendo questo al tuo wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);
define('WP_DEBUG_LOG', true);Controlla l'errore, risolvilo, poi disabilita di nuovo la modalità debug in produzione.
Errori di tipo e controllo dei tipi più rigoroso
PHP 8.x è più rigoroso con la gestione dei tipi. Passare null a funzioni interne che si aspettano una stringa (come strlen(null)) ora genera un avviso di deprecazione o un TypeError. Questo appare spesso in plugin mal programmati che non controllano i valori null prima di passarli alle funzioni stringa.
Impostazioni essenziali di php.ini per WordPress
Dopo l'upgrade di PHP, rivedi queste importanti impostazioni di php.ini. Di solito puoi modificarle attraverso il pannello di controllo del tuo hosting, o creando un file php.ini personalizzato o un file .user.ini nella tua directory root di WordPress:
; Limite di memoria - WordPress raccomanda almeno 256M
memory_limit = 256M
; Dimensione massima dell'upload
upload_max_filesize = 64M
post_max_size = 64M
; Tempo di esecuzione - aumenta per import lenti o operazioni grandi
max_execution_time = 300
; Variabili di input - aumenta per moduli complessi o molti custom field
max_input_vars = 3000
; Reporting degli errori - disabilita display_errors in produzione
display_errors = Off
log_errors = On
error_log = /path/to/php-error.logConfigurazione di OPcache per prestazioni ottimali
OPcache memorizza il bytecode PHP precompilato nella memoria condivisa, in modo che il motore PHP non debba analizzare e compilare gli stessi script ad ogni richiesta. È abilitato per impostazione predefinita presso la maggior parte dei provider di hosting, ma le impostazioni predefinite sono spesso troppo conservative per WordPress. Ecco le impostazioni OPcache raccomandate:
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 1L'impostazione opcache.max_accelerated_files dovrebbe essere superiore al numero totale di file PHP nella tua installazione WordPress. Un tipico sito WordPress con 20 plugin ha circa 5.000-8.000 file PHP. Impostarla a 10.000 ti dà spazio sufficiente. opcache.revalidate_freq controlla con quale frequenza OPcache verifica se i file sorgente sono cambiati. In produzione, 60 secondi è un buon equilibrio. Impostala a 0 negli ambienti di sviluppo, in modo che le modifiche vengano rilevate immediatamente.
Come verificare quale versione di PHP richiedono i tuoi plugin
Non tutti i plugin elencano la loro versione minima di PHP, ma quelli buoni sì. Ecco come verificarlo:
- Pagina del plugin su WordPress.org: scorri verso il basso fino al campo "Requires PHP" nella barra laterale. Se il plugin elenca "7.4" e tu stai eseguendo 8.3, dovrebbe funzionare bene nella maggior parte dei casi, poiché questo indica il minimo, non il massimo.
- readme.txt del plugin: apri il file readme.txt del plugin (in wp-content/plugins/plugin-name/readme.txt) e cerca l'intestazione "Requires PHP".
- Codice sorgente del plugin: il file principale del plugin (il file con l'intestazione Plugin Name) a volte contiene un commento di intestazione "Requires PHP" che WordPress legge.
- Changelog e release notes: controlla il changelog del plugin per le menzioni dei requisiti della versione PHP, specialmente se stai aggiornando più versioni principali.
Procedura di rollback se qualcosa si rompe
Se il tuo sito si rompe dopo un upgrade di PHP e non riesci a risolvere rapidamente il problema, torna immediatamente alla versione precedente di PHP. Ecco la procedura:
- Cambia la versione di PHP indietro: usa lo stesso metodo cPanel, Plesk o del dashboard di hosting che hai usato per l'upgrade. Il downgrade funziona in pochi secondi sulla maggior parte degli host.
- Verifica che il tuo sito funzioni: carica il tuo sito in un browser e controlla il dashboard di amministrazione. Tutto dovrebbe essere di nuovo normale.
- Indaga sul problema: ora che il tuo sito è di nuovo stabile, rivedi i log degli errori per identificare il plugin o tema problematico. Aggiornalo o trova un'alternativa.
- Riprova: una volta risolto il problema di compatibilità, riprova l'upgrade di PHP, prima in staging e poi in produzione.
Se non puoi tornare indietro tramite il dashboard di hosting (ad esempio, se sei bloccato fuori da cPanel), di solito puoi contattare il supporto del tuo provider di hosting e cambieranno la versione di PHP per te in pochi minuti.
Dopo l'aggiornamento: verifica post-upgrade
- Visita la homepage del tuo sito e diverse pagine interne. Cerca problemi visivi, layout rotti o messaggi di errore.
- Testa le funzionalità critiche: moduli di contatto, checkout WooCommerce (se applicabile), login e registrazione, ricerca e qualsiasi funzione personalizzata.
- Controlla il dashboard di amministrazione di WordPress per avvisi sui plugin o notifiche di aggiornamento.
- Apri wp-content/debug.log (se WP_DEBUG_LOG è abilitato) e cerca nuovi errori PHP o avvisi di deprecazione.
- Monitora il log degli errori PHP del tuo server per almeno 24-48 ore. Alcuni problemi appaiono solo in circostanze specifiche (determinati template di pagina, cron job, chiamate API).
- Svuota tutte le cache (cache di pagina, cache degli oggetti, OPcache) in modo che si ricostruiscano con la nuova versione di PHP.
Verifica la tua versione di PHP con InspectWP
Esegui una nuova scansione InspectWP dopo l'upgrade. La sezione hosting mostra la versione di PHP rilevata dall'intestazione del server. Se la versione non è cambiata, il tuo provider di hosting potrebbe memorizzare nella cache il vecchio handler PHP. Svuota la cache del server, aspetta qualche minuto e fai una nuova scansione. InspectWP segnala anche le versioni PHP obsolete nella sezione di sicurezza, in modo da confermare che quell'avviso sia stato risolto dopo l'upgrade.