L’errore 500 Internal Server Error è il messaggio più generico che un server possa restituire. Dice soltanto che qualcosa è andato storto durante l’elaborazione della richiesta, senza specificare che cosa. Proprio per questo spaventa: la pagina non dà indizi e il sito, spesso, è giù per tutti i visitatori. In realtà le cause sono poche e ricorrenti, e con il metodo giusto si individuano quasi sempre in pochi minuti.
In questa guida trovi il significato dell’errore, le varianti con cui si presenta, le cause più frequenti con un esempio di log per ciascuna e una procedura passo per passo per risolverlo, con un approfondimento su WordPress.
Cosa significa errore 500
Il 500 appartiene alla famiglia degli errori 5xx, che indicano un problema sul server e non nella richiesta del visitatore. È un codice di ripiego: il server lo usa quando incontra una condizione imprevista che non rientra in un errore più specifico. Per questo il messaggio non contiene mai la causa: il server sa che qualcosa è fallito, ma per sicurezza non lo mostra a chi visita il sito. I dettagli finiscono nei log.
Poiché il problema è sul server, chi visita il sito può fare ben poco oltre a ricaricare la pagina più tardi. Se il sito è tuo, invece, la causa si trova quasi sempre in uno dei punti che seguono.
Come si presenta
A seconda del server e dell’applicazione, l’errore 500 può comparire come 500 Internal Server Error, HTTP Error 500, Errore interno del server, The server encountered an internal error or misconfiguration sui server Apache, oppure come pagina completamente bianca. Su WordPress, dalla versione 5.2, lo stesso problema si presenta spesso con il messaggio Si è verificato un errore critico in questo sito web. Chrome può anche mostrare la dicitura Questa pagina non funziona seguita da HTTP ERROR 500.
Le cause più frequenti
Un errore nel file .htaccess
Su Apache e LiteSpeed, una direttiva scritta male o non supportata dal server blocca l’intero sito con un 500. È la causa più comune dopo una modifica manuale o l’installazione di un plugin che scrive nel file. Nel log compare una riga di questo tipo:
[core:alert] /home/utente/public_html/.htaccess: Invalid command 'Rewritengine', perhaps misspelled or defined by a module not included in the server configuration
In questo esempio il problema è un semplice errore di battitura: Rewritengine al posto di RewriteEngine.
Un errore fatale di PHP
Un plugin, un tema o un componente aggiornato che chiama una funzione inesistente o è incompatibile con la versione di PHP in uso interrompe l’esecuzione e produce un 500. La riga di log indica il file e la riga responsabili, e il percorso rivela quasi sempre il componente colpevole:
PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /home/utente/public_html/wp-content/plugins/vecchio-plugin/main.php:42
Limiti di risorse superati
Uno script che esaurisce la memoria disponibile o supera il tempo massimo di esecuzione viene fermato dal server. Accade con importazioni pesanti, backup, page builder o plugin mal ottimizzati. Il messaggio tipico è Allowed memory size of 134217728 bytes exhausted, dove il numero indica il limite in byte, in questo caso 128 MB.
Permessi o proprietà dei file errati
Su molti server, file PHP con permessi troppo aperti, come 777, vengono rifiutati per ragioni di sicurezza e generano un 500. Lo stesso accade quando i file appartengono a un utente diverso da quello con cui gira PHP.
Versione di PHP non compatibile
Passare a una versione più recente di PHP può rompere codice datato, che usa funzioni rimosse; tornare a una versione vecchia può rompere codice moderno, che usa funzioni nuove. Se l’errore è comparso subito dopo un cambio di versione, la causa è quasi certamente questa.
Come risolvere l’errore 500, passo per passo
Prima di intervenire, assicurati di avere un backup recente del sito. Poi procedi in quest’ordine, verificando il risultato dopo ogni passaggio.
- Leggi il log degli errori. È il passaggio più importante e il più trascurato. Il log del server web e quello di PHP, accessibili dal pannello dell’hosting, contengono quasi sempre una riga che indica la causa precisa. Cerca le righe con l’orario in cui hai visto l’errore. Se non sai dove trovarli, la guida ai log del server ti aiuta.
- Rinomina il file .htaccess nella cartella principale del sito. Se l’errore scompare, il problema era lì: ricrealo con le sole regole indispensabili, oppure, su WordPress, salva di nuovo i permalink per generarne uno pulito.
- Disattiva plugin e tema se il sito usa un CMS. Su WordPress puoi farlo anche senza accedere alla bacheca, rinominando via FTP la cartella
wp-content/plugins. Se il sito torna a funzionare, ripristina il nome originale e riattiva i plugin uno alla volta per trovare il colpevole. - Verifica la versione di PHP dal pannello dell’hosting. Se l’errore è comparso dopo un cambio di versione, torna temporaneamente a quella precedente e aggiorna i componenti incompatibili prima di riprovare.
- Aumenta i limiti di risorse se il log segnala memoria esaurita o tempo scaduto, intervenendo su
memory_limitemax_execution_timedal pannello. Su molti hosting puoi farlo anche dalla sezione di configurazione di PHP, senza toccare file. - Controlla i permessi:
644per i file e755per le cartelle sono i valori corretti nella maggior parte dei casi. - Ripristina un backup se non riesci a individuare la causa e il sito deve tornare online subito. Una volta ripristinato, puoi indagare con calma su una copia di staging.
Errore 500 su WordPress
Su WordPress, oltre ai passaggi generali, ci sono due strumenti specifici. Il primo è la modalità di recupero: quando un errore fatale blocca il sito, WordPress invia all’email dell’amministratore un messaggio con il nome del plugin o del tema responsabile e un link per accedere alla bacheca con quel componente disattivato. Controlla anche la cartella spam, perché questi messaggi finiscono spesso lì.
Il secondo è il log di debug. Aggiungendo a wp-config.php queste righe, gli errori vengono scritti nel file wp-content/debug.log senza essere mostrati ai visitatori:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Se il log segnala memoria esaurita, puoi alzare il limite di WordPress aggiungendo define( 'WP_MEMORY_LIMIT', '256M' );, ricordando che il valore non può superare quello concesso da PHP sul server. Quando hai risolto, disattiva il debug. Molti altri casi applicativi sono descritti nella guida agli errori di WordPress.
Errore 500 dopo una migrazione
Un caso a parte, molto frequente, è l’errore 500 che compare subito dopo aver spostato il sito su un nuovo hosting. Le cause tipiche sono tre. La prima è un file .htaccess con direttive specifiche del vecchio server, come impostazioni di PHP scritte con php_value o gestori di versione di PHP propri del vecchio provider, che il nuovo server non riconosce. La seconda è una versione di PHP diversa da quella usata in precedenza. La terza sono percorsi assoluti rimasti nei file di configurazione, che puntano a cartelle del vecchio server non più esistenti.
La procedura di controllo è la stessa vista sopra, ma conviene partire dal file .htaccess: rinominalo, verifica se il sito riparte e reintroduci solo le regole davvero necessarie. Poi allinea la versione di PHP a quella del vecchio hosting e, solo quando tutto funziona, valuta un aggiornamento graduale. Se il sito usa WordPress, controlla anche che i dati di accesso al database in wp-config.php siano quelli del nuovo hosting: in quel caso, però, l’errore mostrato è di solito quello di connessione al database e non un 500.
Quando il problema non dipende da te
Se il log non mostra errori legati al tuo sito, se l’errore è intermittente e compare anche su pagine statiche, o se riguarda più siti sullo stesso hosting, la causa può essere nel server: un servizio in crisi, un disco pieno, un aggiornamento di sistema andato male. In questo caso l’unica soluzione è contattare l’assistenza dell’hosting, indicando l’indirizzo, l’ora dell’errore e le verifiche che hai già fatto. Se il sito passa da un CDN, verifica anche che l’errore non provenga dal CDN stesso: in quel caso la pagina di errore riporta di solito il nome del servizio.
Errore 500 e posizionamento
Un errore 500 di qualche minuto non ha conseguenze sulla presenza del sito su Google, che riprova la scansione più tardi. Se però persiste per ore o giorni, Google rallenta la scansione e può rimuovere le pagine dai risultati finché non tornano disponibili. Un servizio di monitoraggio che ti avvisi appena il sito smette di rispondere è il modo migliore per ridurre al minimo questi tempi. Dopo un’interruzione lunga, il rapporto sull’indicizzazione di Search Console ti mostra quali pagine hanno restituito errori del server durante la scansione.
Domande frequenti
L’errore 500 è colpa del mio computer?
No. Il 500 è un errore del server e non dipende dal browser, dalla cache o dalla connessione del visitatore. Ricaricare la pagina può aiutare solo se il problema era momentaneo.
Che differenza c’è tra errore 500 e 503?
Il 500 indica un errore imprevisto durante l’elaborazione, quasi sempre nel codice o nella configurazione. Il 503 indica che il server è temporaneamente non disponibile, per manutenzione o sovraccarico. Ne parliamo nella guida all’errore 503.
Perché l’errore 500 compare solo in alcune pagine?
Perché la causa riguarda solo il codice eseguito da quelle pagine: un modulo, uno shortcode, un plugin che lavora su un tipo di contenuto specifico. Il log degli errori, filtrato per l’indirizzo della pagina, ti dirà quale componente è coinvolto.
Posso evitare che l’errore 500 si ripresenti?
Ridurre il rischio è possibile: aggiorna plugin e temi prima su una copia di staging, mantieni una versione di PHP supportata, evita di modificare il file .htaccess senza una copia di sicurezza e tieni attivi backup automatici giornalieri.








