Categorie
Web development WordPress

Errore 500 WordPress: tutte le possibile cause e soluzioni

Avere un errore 500 in WordPress rende il tuo sito inaccessibile, causando una perdita al tuo business.

Le possibile cause di questo errore possono essere molteplici, in questo articolo analizzeremo le più comuni.

Cosa è un errore 500?

Quando visiti un sito web, il tuo browser invia una richiesta al server che ospita il sito.

Il server riceve la richiesta, la elabora e genera una risposta. Tale risposta include un codice di stato, chiamato HTTP status code.

Se questo codice è 200, vuol dire che la richiesta è stata elaborata con successo. Se invece questo codice è del tipo 5xx (500, 501, 502, 503… etc), allora vuol dire che il server ha avuto dei problemi nell’elaborare la richiesta.

Quando il codice di risposta è del tipo 5xx, nel corpo della risposta viene incluso un messaggio simile ad uno di questi:

  • HTTP 500 – Internal Server Error
  • 500 Internal Server Error
  • The website cannot display the page – HTTP 500.
  • Is currently unable to handle this request. HTTP ERROR 500.
  • 500 Internal Server Error. Sorry something went wrong.
  • Internal Server Error
  • HTTP 500

Per questo motivo, è importare effettuare il debug in WordPress, per capire cosa stia causando l’errore.

Come effettuare debug in WordPress

WordPress ha delle funzionalità per poter eseguire il debug di errori server-side.

Queste funzionalità potrebbero fornire le informazioni necessarie per capire quale sia la causa dell’errore.

Per poter attivare tali funzionalità, è necessario operare delle modifiche al file wp-config.php posto nella home del sito.

Come attivare WP_DEBUG

WP_DEBUG è una costante PHP che può essere utilizzata per abilitare la modalità di debug di WordPress.
Per impostare WP_DEBUG è necessario inserire nel file wp-config.php il seguente codice

define( 'WP_DEBUG', true );

Se il valore di WP_DEBUG non è definito, WordPress assume che sia falso.
Quando WP_DEBUG è impostato a true, WordPress dovrebbe mostrare tutti gli errori, i notices ed i warnings di PHP.

Per questo motivo attivare WP_DEBUG è la prima azione da compiere per capire le possibile cause di un errore 500 in WordPress.

Come attivare i logs di WordPress

Per attivare i logs di WordPress è necessario che WP_DEBUG sia impostato a true, quindi è necessario definire il valore della costante WP_DEBUG_LOG.

Il valore di tale costante può essere impostata a true, oppure uguale ad un percorso in cui PHP abbia i permessi di scrittura.

Nel primo caso, quindi è necessario inserire nel file wp-config.php

define( 'WP_DEBUG_LOG', true );

mentre nel secondo

define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

Se WP_DEBUG_LOG è impostata a true, i logs verranno salvati nel percorso /wp-content/debug.log

Non mostrare gli avvisi di WordPress, ma salvarli nei logs

Per poter ottenere questo risultato, è necessario che WP_DEBUG sia attivo, che WP_DEBUG_LOG non sia false.

Quindi, è necessario inserire nel file wp-config.php

define( 'WP_DEBUG_DISPLAY', false );

Qualcosa non funziona come previsto nel debug in WordPress?

PHP ha delle direttive globali (php.ini) che possono interferire con il funzionamento delle costanti di debug di WordPress. Ad esempio, è possibile che display_errors e log_errors interferiscano con WP_DEBUG_DISPLAY e WP_DEBUG_LOG.

Quindi, se non volessi mostrare gli errori ai visitatori del sito, ma volessi che questi vengano inseriti nel file di log, e avessi impostato WP_DEBUG, WP_DEBUG_LOG e WP_DEBUG_DISPLAY opportunamente, ma senza aver successo, potresti provare ad inserire nel file wp-config.php

ini_set( 'display_errors', 0 );
ini_set( 'log_errors', 1 );

Errore 500 in WordPress, quando gli strumenti di debug non aiutano

Ci sono dei casi in cui, nonostante gli strumenti di debug messi a disposizione da WordPress, non riusciamo ad ottenere informazioni riguardo all’errore 500 che stiamo ottenendo.

Errori nel file .htaccess

Il file .htaccess è un file di configurazione di Apache, il server HTTP più usato al mondo, oltre che ad essere quello più comune per le installazioni di WordPress.

WordPress utilizza questo file per implementare diverse funzionalità (pretty permalinks, plugin di caching, redirect da sito http a https e altri ancora).

Questo file può essere oggetto di modifiche sia da parte di WordPress (Core o Plugins) che da parte di software per la gestione di hosting, come cPanel, Plesk o Site Tools di Siteground.

E’ quindi possibile che la disinstallazione / aggiornamento di un plugin, o la migrazione da un servizio di hosting ad un altro abbia reso il file .htaccess non più valido.

Quindi potrebbe essere necessario sovrascriverne il contenuto, inserendo solo ciò che è necessario per funzionamento base di WordPress, che è specificato a questa pagina.

Problemi con la versione di PHP

Se ci sono problemi con il supporto al codice scritto, l’azione migliore da compiere è usare la versione di PHP raccomandata da WordPress.

Se questo non dovesse essere sufficiente, si potrebbe provare ad usarne una leggermente più vecchia (ad esempio, al momento della scrittura di questo articolo, la versione raccomandata da WordPress è la 7.4 o maggiore, quindi si potrebbe optare per usare la 7.0).

Perché questa scelta? Perché un plugin attivo non più mantenuto potrebbe contenere codice che era deprecato nella versione 7.0, che in seguito ha subito la rimozione del supporto nelle versioni di PHP successive.

WordPress errore nello stabilire una connessione al database

Quando WordPress non riesce a connettersi al database, mostra a schermo il messaggio errore nello stabilire una connessione al database.

Ecco le possibili cause:

  • Il database non è raggiungibile all’indirizzo specificato nel file wp-config.php (costante DB_HOST)
  • Le credenziali fornite in wp-config.php (costanti DB_USER e DB_PASSWORD) non sono corrette
  • Il nome del database specificato in in wp-config.php non è corretto (costante DB_NAME)

Se il database non fosse raggiungibile, ti consiglio di controllare presso il tuo fornitore di hosting se il servizio di database sia venduto a parte rispetto a quello di hosting.

In caso affermativo, controlla che il pacchetto non sia scaduto.

Se il pacchetto non fosse scaduto, o se non fosse venduto separatamente rispetto all’hosting, ti consiglio di aprire un ticket di supporto all’assistenza del servizio di hosting.

Approfondimenti

Se ti interessano contenuti riguardo a WordPress, puoi controllare i seguenti articoli:

Conclusioni

In questo articolo abbiamo analizzato le cause più comuni di un errore 500 in WordPress.
Per ciascuna di esse, abbiamo visto alcune soluzioni rapide e azioni per comprendere meglio quale sia il file che causa l’errore.