«Si è verificato un errore critico in questo sito web». Oppure, peggio ancora, una pagina completamente bianca, senza nemmeno un messaggio. Sono i due modi in cui WordPress ti dice che il codice PHP si è fermato a metà. Capita quasi sempre dopo un aggiornamento, l’installazione di un plugin o un cambio di versione di PHP, e quasi sempre si risolve in pochi minuti, senza perdere dati.
Vediamo come trovare il colpevole e rimettere in piedi il sito con calma.
Prima cosa: niente panico, i tuoi dati ci sono
Un errore critico non cancella articoli, prodotti o ordini: quelli stanno nel database e nei file, intatti. Semplicemente una parte del codice va in errore e interrompe la costruzione della pagina. L’obiettivo è capire quale parte.
Controlla l’email dell’amministratore
Dalla versione 5.2 WordPress ha una “modalità di ripristino”: quando si verifica un errore fatale, invia un’email all’indirizzo dell’amministratore del sito, con il nome del plugin o del tema che ha causato il problema e un link speciale. Quel link ti fa entrare nel pannello in modalità sicura, con il componente difettoso messo in pausa, così puoi disattivarlo o aggiornarlo.
Controlla anche lo spam: è un’email automatica e a volte finisce lì. Se l’email non arriva, nessun problema: si procede a mano.
Le cause più comuni
- Un plugin aggiornato che non è compatibile con un altro plugin, con il tema o con la tua versione di WordPress.
- Il tema, soprattutto se hai modificato direttamente i suoi file (per evitarlo, leggi la guida al tema child).
- La versione di PHP: un plugin vecchio può non funzionare con una versione di PHP più recente, o viceversa un plugin nuovo può richiedere una versione più recente di quella impostata.
- Memoria esaurita: il messaggio nel log contiene “Allowed memory size exhausted” (ne parliamo nella guida su memory_limit e limiti PHP).
- Un aggiornamento interrotto, che ha lasciato file a metà.
- Codice aggiunto a mano, ad esempio uno snippet incollato nel file
functions.phpcon un errore di sintassi.
Leggere il messaggio d’errore vero
La schermata che vedono i visitatori è volutamente vaga. Il messaggio utile è nel log degli errori PHP, che puoi consultare dal pannello (vedi la guida ai log di accesso e di errore). In alternativa puoi attivare il registro di debug di WordPress modificando il file wp-config.php, prima della riga “That’s all, stop editing!”:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Con queste impostazioni gli errori finiscono nel file wp-content/debug.log senza essere mostrati ai visitatori. Ricarica il sito, poi apri il file: l’ultima riga di tipo “PHP Fatal error” indica il file e la riga che hanno causato il problema. Il percorso di solito contiene il nome del colpevole, ad esempio wp-content/plugins/nome-plugin/....
Importante: quando hai finito, rimetti WP_DEBUG a false e cancella il file debug.log. Lasciarlo lì espone informazioni sul tuo sito.
Disattivare un plugin senza entrare in WordPress
Se non riesci ad accedere al pannello di WordPress, puoi disattivare un plugin rinominando la sua cartella:
- collegati via FTP (guida: configurare FileZilla) oppure usa il file manager del pannello;
- vai in
public_html/wp-content/plugins/; - rinomina la cartella del plugin sospetto, ad esempio da
nome-pluginanome-plugin-off; - ricarica il sito.
Se non sai quale plugin sia, rinomina l’intera cartella plugins in plugins-off: tutti i plugin si disattivano insieme. Se il sito torna a funzionare, rimetti il nome originale e riattivali uno alla volta dal pannello di WordPress, controllando il sito dopo ognuno. Quello che fa ricomparire l’errore è il colpevole.
Se usi l’accesso SSH (porta 7530, con una chiave aggiunta dal pannello), lo stesso lavoro si fa più rapidamente con WP-CLI.
Se il colpevole è il tema
Rinomina allo stesso modo la cartella del tema attivo in wp-content/themes/. WordPress ripiega su un tema predefinito, se ne hai uno installato (ad esempio uno dei temi “Twenty”). Per questo è una buona idea tenere sempre un tema predefinito installato, anche se non lo usi.
Se il problema è comparso dopo il cambio di PHP
Rimetti la versione precedente dal pannello DirectAdmin: da noi puoi scegliere fra le versioni dalla 5.6 alla 8.5 (guida: cambiare versione PHP). Una volta che il sito è di nuovo online, aggiorna con calma i componenti vecchi e riprova il passaggio di versione, magari prima su una copia del sito.
La via più rapida: il ripristino
Se sai che fino a ieri il sito funzionava e non vuoi indagare subito, puoi ripristinare file e database alla situazione precedente con JetBackup: da noi ci sono almeno due copie al giorno, conservate 30 giorni a rotazione (procedura nella guida al ripristino con JetBackup). Attenzione solo se hai un e-commerce: ripristinando il database tornano indietro anche ordini e clienti registrati nel frattempo. In quel caso conviene ripristinare solo i file del plugin o del tema.
Come evitare che ricapiti
- aggiorna un componente alla volta, non tutto insieme (trovi il metodo nella guida su aggiornare WordPress senza rischi);
- non modificare i file del tema principale, usa un tema child;
- elimina i plugin che non usi più: meno codice significa meno incompatibilità;
- se usi Installatron per gli aggiornamenti automatici, ricorda che crea un backup prima di ogni aggiornamento.
Se dopo questi passaggi il sito resta bianco, apri un ticket dall’area clienti indicando cosa hai già provato e, se lo hai, l’errore letto nel log.