Errore HTTP “500 Internal server error” in PHP / WordPress I principali casi che possono capitare (e come risolverli)

<span class="entry-title-primary">Errore HTTP “500 Internal server error” in PHP / WordPress</span> <span class="entry-subtitle">I principali casi che possono capitare (e come risolverli)</span>

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.

In ambiente WordPress

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

Ti piace questo articolo?

2 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Errore HTTP “500 Internal server error” in PHP / WordPress I principali casi che possono capitare (e come risolverli)

Votato 10 / 10, da 2 utenti