Errore HTTP “500 Internal server error”: come risolverlo e da cosa dipende

Argomenti: , ,
Pubblicato il: 28-05-2021 18:00 , Ultimo aggiornamento: 28-05-2021 18:31

Se sei finito su questa pagina, vuol dire che ti stai chiedendo che cosa sia l’errore 500: si tratta di una delle notifiche più diffuse in assoluto a livello di siti, e può essere legata ad un insieme di cause diverse. È un errore difficile da trattare per cui per capire bene di che si tratta nel vostro caso sarà necessario fare un po’ di ragionamenti assieme e vagliare un po’ di ipotesi.

500 è una notifica di stato HTTP che viene utilizzata a livello standard, su qualsiasi sito, per indicare un errore interno nel server, ovvero Internal server error. 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 cautelativa lato tecnologico.

Il più delle volte, comunque, nella mia esperienza l’errore 500 si riconduce un problema legato a due fattori causanti possibili:

  1. il sovraccarico del server (troppe richieste, saturazione della memoria, errore conseguente);
  2. un errore di sintassi nel codice PHP del sito, o altrettanto spesso in qualche file di direttive (ad esempio i file htaccess o httpd)
  3. permessi errati CHMOD per gli hosting Linux;
  4. errori di sintassi nel file delle direttive del server htaccess;
  5. errori di configurazione del server (di solito su hosting dedicati o VPS);
  6. errori di sintassi irreversibili all’interno del vostro codice PHP;
  7. errori legati a divisioni per zero, puntatori a null, ecc.
  8. errori di configurazione nel file delle direttive htaccess (se usate Apache)
  9. bug nel codice PHP;
  10. bug nel database MySQL, che potrebbe essere corrotto ad es..

Può capitare su qualsiasi configurazione di dominio o server, in quanto è collegato molto spesso ad un errore irreversibile o 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 accidentalmente indicizzati da Google, anche se sui siti configurati in modo sicuro questo non dovrebbe succedere.

Volevo visitare un sito, ma da’ errore 500!

Purtroppo se siete utenti esterni e volevate solo vedere quella pagina web, ed un errore 500 ve lo impedisce, non potete fare nulla per risolvere: deve risolvere il proprietario del sito, quindi potete solo provare ad accedere al sito web in un secondo momento, sperando che questa volta funzioni. Un po’ di pazienza!

Casi reali di errore 500

La notifica di errore con codice 500, come abbiamo visto, può appartenere a diverse casistiche di errore. Può capitare su un sito web di nostra proprietà, su un sito in manutenzione o in aggiornamento, su un sito configurato male per errore, e poi:

  • su un blog in WordPress
  • sul sito della PostePay o delle Poste Italiane S.p.A.
  • utilizzando servizi Aruba (o di altri gestori) di posta o web hosting
  • sul sito dell’Agenzia delle Entrate
  • durante le procedure di fatturazione elettronica e di trasmissione corrispettivi
  • durante la fase di invio SMS dal web,
  • sul sito Vodafone o Wind
  • sul sito della SIAE

Insomma, può capitare… molto, molto spesso!

Che cosa indica un errore 500?

Per capirlo è indispensabile attivare la modalità di debug del sito (vedi qui) 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.

Come risolvere l’errore 500?

  • Aspettando e riprovando dopo un po’ (è banale, ma è così);
  • aggiornando la cache
  • pulendo la cronologia
  • provando ad accedere da browser differenti

Come trattare l’errore 500 su WordPress

Quando si sviluppa in PHP, Laravel, ambiente WordPress Joomla! o Drupal, l’errore 500 è certamente uno dei più comuni – ed anche uno dei più difficili da trattare. Cercherò adesso 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è.

La notifica di errore HTTP 500 su WordPress indica un errore irreversibile nel codice, in un plugin oppure in un theme, il che impedisce alla pagina di poter essere visualizzata. La cosa migliore per risolverlo è quella di consultare il log del proprio sito fino a quel punto, oppure rivolgersi ad un sistemista o ad uno sviluppatore perchè ci dia una mano.

Consultare i log del proprio sito

La prima cosa da fare, nella pratica, è 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.

Modalità debug in WP

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à, quindi in caso chiedete al vostro hosting e se non vi permette di farlo, l’unica possibilità è quella di cambiare hosting, oppure scaricare il sito in locale e debuggarlo su localhost.

Assicuratevi 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.

Per tracciare l’errore è 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. 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.

Suggerimenti generali per risolvere l’errore 500

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.

Errore 500 su Cpanel

Una forma particolare di errore si può ottenere, in questo caso, qualora si faccia uso di pannello di controllo del sito cPanel e si usi WordPress: anche in questo caso abbiamo una notifica molto generica, un errore lato server con codice 500, che ha lo stesso significato di quello che abbiamo visto in precedenza. Come risolvere in questi casi? Le linee guide generali che possiamo seguire sono le seguenti:

  1. impostare e verificare i permessi via CHMOD
  2. provare a rinominare il file .htaccess che, in teoria, potrebbe presentare degli errori di sintassi (se il file .htaccess è sbagliato, non funziona l’intero sito)
  3. consulta i log del tuo sito, all’interno di cPanel o via SSH, a seconda dei casi, per verificare la natura del problema e correggi nello specifico gli errori presenti nel file error.log, se disponibile

Come analizzare il file di log di Apache

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.

Per analizzare le ultime righe del file di log di Apache, ad esempio, potete accedere via SSH al server e dare il seguente comando:

watch tail -n 15 /var/log/apache2/error.log

che vi mostrerà in sostanza le ultime 15 righe generate come errori. Troverete quasi certamente, all’interno di questo file, la risposta che state cercando, in forma di errore PHP specifico.

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. 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.

5/5 (3)

Che te ne pare?

Grazie per aver letto Errore HTTP “500 Internal server error”: come risolverlo e da cosa dipende di Salvatore Capolupo su Trovalost.it
Errore HTTP “500 Internal server error”: come risolverlo e da cosa dipende (Guide, Assistenza Tecnica, Configurazione Hosting, Errori più comuni)

Articoli più letti su questi argomenti:

Trovalost.it è gestito, mantenuto, ideato e (in gran parte) scritto da Salvatore Capolupo