Errore HTTP “500 Internal server error”: che cos’è, e come si risolve

Errore HTTP “500 Internal server error”: che cos’è, e come si risolve

Cosa vuol dire l’errore 500

Si tratta di un problema che può capitare per le cause più diverse tra loro. Il più delle volte è un problema legato al sovraccarico del server, ad esempio in seguito ad un bug del sito, oppure sulla base di un errore di sintassi all’interno del file .htaccess. La notifica di errore HTTP 500, in altri termini, è il modo in cui un server ci dice che il server ha generato un errore interno non specificato, ad esempio: un errore irreversibile nel codice, in un plugin oppure nel theme del sito, ed il tutto impedisce alla pagina di essere visualizzata in modo corretto. L’utente esterno non può fare nulla, in questo caso, ma deve risolvere il webmaster.

Quando può capitare un errore 500?

La notifica di errore con codice 500 è generica e può appartenere a diverse casistiche: ad esempio il sito web nostro o di un cliente, un servizio web che non risponde causa manutenzione o aggiornamenti in corso, un blog in WordPress così come il sito della PostePay, utilizzando servizi Aruba (o di altri gestori) di posta o web hosting, e via dicendo.

Da cosa dipende?

La notifica è generica, non specifica nello specifico di che tipo di errore si tratti: per vederlo, è indispensabile attivare la modalità di debug del sito e consultare i log di errore del sito, che indicheranno nel dettaglio che cosa è successo, a quale riga di codice del sito e all’interno di quale file.

L’errore 500 può essere sintomatico di varie tipologie di problematiche, e senza dubbio si tratta di un errore non banale che impedisce al sito o al servizio web di mostrarsi all’utente normalmente. Si tratta di una notifica del server che avvisa che la pagina che avete richiesto non è disponibile, per via di un errore irreversibile o di una configurazione errata dello stesso.

Tipicamente un errore 500 può dipendere da:

  • permessi errati CHMOD (per gli hosting Linux);
  • errori di sintassi nel file delle direttive del server htaccess;
  • errori di configurazione del server (di solito su dedicati o VPS).

Può capitare indifferentemente, in sostanza, su qualsiasi configurazione di dominio o server, in quanto è collegato molto spesso ad un errore irreversibile/grave nel codice (anche solo un’istruzione scritta con la sintassi non corretta basta a generarlo).

Non sempre la reale natura dell’errore viene esplicitata sui server in produzione o pubblici, di norma per ragioni di sicurezza, per cui per saperne di più bisogna avere accesso ai log di sistema (via cPanel o Plesk, ad esempio). In teoria su alcuni server è possibile che gli errori 500 vengano indicizzati da Google, anche se sui siti configurati in modo sicuro questo non dovrebbe mai succedere.

Errore HTTP “500 Internal server error” in PHP / WordPress

Quando si sviluppa in PHP, Laravel, ambiente WordPress Joomla! o Drupal che sia, l’errore 500 è certamente uno dei più comuni – ed anche uno dei più difficili da trattare. In questa nuova guida cercherò di fornire le indicazioni fondamentali per affrontarlo e risolverlo, anche perchè è molto comune eseguire delle operazioni ad esempio su un server di sviluppo, e poi ritrovarsi di fronte un errore di questo tipo e non avere le idee chiare su cosa sia successo, e perchè.

Questo genere di errore, in effetti, è difficile da trattare spesso perchè è generico: a differenza del 404 (che ad esempio riferisce una pagina web mancante o cancellata), l’errore con codice del server 500 fa riferimento ad un problema di PHP che viene esplicato come misura “di protezione” in questi termini. Questo significa, in buona sostanza, che il server si accorge che qualcosa non va lato PHP, e cerca di porvi rimedio utilizzando un codice 500 come misura protettiva.

Natura del problema: si tratta di un problema abbastanza comune, che può capitare per le cause più svariate. La notifica di errore HTTP 500 è il modo in cui un server ci dice che il server ha generato un errore internodi tipo non specificato, ad esempio: un errore irreversibile nel codice, in un plugin oppure in un theme, il che impedisce alla pagina di poter essere visualizzata (per saperne di più tecnicamente clicca qui).

La cosa migliore per risolverlo è quella di consultare il log del proprio sito fino a quel punto, oppure rivolgersi ad un programmatore professionista perchè ci dia una mano.

La prima cosa da fare, infatti, è quella di cercare di isolare il problema in fase di sviluppo. Per isolare il problema può essere opportuno, come prima cosa, attivare il file di log sul vostro server, in modo che l’errore che si scatena venga ad essere scritto su un file che possiate consultare in seguito. Se state sviluppando in WordPress, ad esempio, la modalità di debug viene esattamente incontro a questo genere di necessità, quindi sul server dove trovate l’errore 500 andate ad aggiungere al file wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

dove la seconda direttiva, in particolare, abiliterà la scrittura del debug.log dentro la cartella /wp-content/, mentre la prima direttiva dovrà sostituire quella di default (che normalmente è impostata a false). Considerate che alcuni servizi di hosting potrebbero non consentire questo genere di modalità per un motivo molto semplice: gli hosting comuni, impostati su IP o domini pubblici, potrebbero essere pensati esclusivamente per siti in fase di produzione, non di sviluppo. Quindi accertatevi che la modalità sviluppatore sia accessibile dal vostro hosting, ricordando pure che è possibile abilitare gli errori in PHP mediante questa ulteriore direttiva PHP:

error_reporting(-1);
ini_set('display_errors', 'On');

che potete mettere direttamente anche all’inizio del file wp-config.php (per saperne di più su questo file ho fatto due guide apposta). In genere questo genere di direttive rivelano esplicitamente gli errori di PHP, che normalmente – per via dell’impostazione safe che la maggioranza degli hosting di qualità tende ad adottare – sono nascosti agli occhi dei profani, anche perchè potrebbero essere sfruttati per scopi malevoli specie nel medio-lungo periodo.

Come accennato, comunque, 500 è una risposta generica che non dice nulla – di per sè – sulla natura dell’errore: per tracciarne la causa, pertanto, è necessario analizzare il file di log degli errori che ogni hosting mette solitamente a disposizione dei webmaster (error_log, se siamo su server Apache + PHP, nella cartella di riferimento root o in una delle sottocartelle rispettive). Esempi di errori comuni di tipo 500 sono legati a:

  • errori di sintassi irreversibili all’interno del vostro codice PHP;
  • errori legati a divisioni per zero, puntatori a null, ecc.
  • errori di configurazione nel file delle direttive htaccess (se usate Apache)

che poi sono pure le circostanze più comuni dietro cui si “nasconde” un errore con codice 500.

Errore 500 in WordPress

Le cause più diffuse degli errori 500 lato server in WordPress riguardano:

  1. un errore nei permessi dei file, cosa che può essere risolta provando a reimpostare i permessi CHMOD.
  2. in caso non fosse questo il problema si può provare ad isolare l’errore, quindi disabilitare tutti i plugin, verificare se l’errore persiste ed in caso attivarli nuovamente, uno ad uno, finchè non sarà uscita fuori nuovamente la notifica in questione.
  3. Stessa cosa può ripetersi provando a disinstallare i theme non utilizzati, e provando a cambiare quello corrente (nel log, lo ripetiamo, troverete la notifica esatta dell’errore che ha causato il problema).
  4. Un errore 500, più in generale, si riflette in un errore irreversibile a livello di theme, plugin, mu-plugin o core all’interno del vostro sito PHP, per cui non dovrete fare altro che cercare di riprodurlo, individuarlo e risolverlo.
  5. Se nessuna delle soluzioni precedenti funziona, bisogna debuggare il sito nel dettaglio.

Un modo per debuggare WordPress molto comune, del resto, è quello di:

  • disabilitare tutti i plugin, verificare se l’errore persiste ed in caso attivarli nuovamente, uno ad uno, finchè non sarà uscita fuori nuovamente la notifica in questione;
  • cambiare theme, se magari l’errore è annidato lì;
  • aggiornare il core di WP all’ultima versione, in modo da accertarsi di avere l’ultima versione stable;
  • installare una versione precedente di WP, che magari continuerà a funzionare, caricandola direttamente via FTP.

Del resto è bene sapere che:

  1. A volte l’errore con codice server 500 è legato ad un errore nei permessi dei file, che può essere risolto provando a reimpostare i permessi via CHMOD.
  2. Può essere una buona idea disinstallare i theme ed i plugin non utilizzati, perchè magari a volte causano problemi anche se sono disattivati o non li state utilizzando o magari vi siete dimenticati qualche impostazioni sbagliata su di essi.
  3. Un errore 500, più in generale, si riflette in un errore grave a livello di theme, plugin, mu-plugin o core all’interno del vostro sito PHP, per cui non dovrete fare altro che cercare di riprodurlo, individuarlo e risolverlo.

Purtroppo non c’è altro che si possa dire in generale su questa casistica di errore, che è piuttosto varia e potrebbe richiedere l’intervento di personale professionista o qualificato. Le casistiche che ho elencato coprono comunque la maggiorparte dei casi che vi potrebbero capitare da webmaster o amministratori di un sito web.

Come si risolve

500 è una risposta generica che non dice nulla – di per sè – sulla natura dell’errore: per tracciarne la causa, pertanto, è necessario analizzare il file di log degli errori che ogni servizio di hosting mette a disposizione dei webmaster (error_log, se siamo su server Apache + PHP, nella cartella di riferimento root o in una delle sottocartelle rispettive). Contrariamente ad altri errori come il 406 (che può dipendere dal client), l’errore 500 dipende certamente dal server, e merita un’analisi dettagliata per poter determinare una soluzione.

Se siete un utente comune non specializzato (quindi non siete webmaster o programmatori), l’errore 500 non dipende quasi certamente da voi, per cui mettetevi l’anima in pace: probabilmente il sito, l’app o il servizio a cui state cercando di accedere presenta questo imprevisto temporaneo, ed il meglio che potrete fare sarà quello di segnalarlo o farlo presente via telefono, ticket o email al proprietario del sito (ad esempio se un sito di telefonia presentasse un errore 500, segnalatelo al gestore del servizio: non risolverà il problema, ma lo porterà comunque sulla buona strada ed il vostro, in ogni caso, l’avrete fatto). Nella migliore delle ipotesi, potrete risolvere il vostro errore 500 pazientando un po’ o riprovando in un secondo momento, accertandovi nel frattempo che la vostra connessione ad internet sia ben funzionante.

Conclusioni

Purtroppo non c’è altro che si possa dire in generale su questa casistica di errore, che è piuttosto varia e potrebbe richiedere l’intervento di personale professionista o qualificato. Le casistiche che ho elencato coprono comunque la maggiorparte dei casi che vi potrebbero capitare da webmaster o amministratori di un sito web.

Infine considerate che anche vari errori di sintassi nel file htaccess, ovvero direttive errate e/o non riconosciute, potrebbero causare su Apache un errore di tipo 500. La cosa migliore per risolverlo è quella di consultare il log del proprio sito fino a quel punto, oppure rivolgersi ad un programmatore professionista perchè ci dia una mano.

Dalla sezione offerte del nostro sito: VPS Keliweb – VM 9L
Guarda l'offerta

2 voti


Informazioni sull'autore

Salvatore Capolupo

Consulente SEO, ingegnere informatico e fondatore di Trovalost.it, Pagare.online, Lipercubo.it e tanti altri. Di solito passo inosservato e non ne approfitto.