Errore 500 Internal Server Error: trovare la causa nei log e rimettere online il sito
· 5 min di lettura
Cosa significa l’errore
Un errore 500 è la risposta di un server che ha ricevuto la richiesta, ha provato a eseguirla ed è andato in errore senza dire perché. Il server web funziona; l’applicazione dietro di lui (quasi sempre PHP, con WordPress) è partita e si è fermata per un errore. Il browser mostra una pagina bianca o “HTTP ERROR 500”; WordPress, a volte, “Si è verificato un errore critico sul tuo sito web”.
Differenza con i codici vicini: un 502 Bad Gateway significa che il server web non è riuscito a raggiungere l’applicazione (PHP-FPM fermo); un 503, che si rifiuta di servire le pagine di proposito (sovraccarico, modalità manutenzione); un 403 Forbidden, che l’accesso è bloccato da permessi o regole. Un 500 significa che l’applicazione ha risposto, ma con un errore. La causa è quasi sempre nei tuoi file o nella tua configurazione, e il motivo esatto sta in un log.
Cause frequenti
- Un plugin o un tema dopo un aggiornamento. Un file incompatibile con la versione di PHP, un conflitto tra due plugin. La causa numero uno su WordPress.
- Un cambio di versione di PHP. Si passa a una versione più recente e una parte del sito usa una sintassi o un modulo rimosso.
- Un errore di sintassi nel
.htaccess. Una direttiva scritta male o un modulo di Apache mancante: Apache restituisce 500 ancora prima di avviare PHP. - Permessi o proprietario sbagliati. Dopo una migrazione, alcune cartelle appartengono a
root, illeggibili per PHP, oppure sono troppo aperte. - Limite di memoria raggiunto. Una pagina ha bisogno di più di
memory_limit. - Database. Credenziali cambiate, server MySQL o MariaDB fermo, disco pieno, tabella danneggiata.
Se sei un visitatore
Non puoi riparare nulla su un sito che non è tuo. Ricaricalo più tardi; se l’errore resta, deve intervenire il proprietario.
Se il sito è tuo: verifica prima
Apri il Website down checker: mostra il codice HTTP visto dall’esterno. Poi leggi i log del server:
# gli ultimi errori, i più recenti in basso
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/apache2/error.log
sudo tail -n 50 /var/log/php8.3-fpm.log
sudo journalctl -u php8.3-fpm -n 50
Su un hosting condiviso, il log di solito si chiama error_log e sta nella cartella del sito. Righe tipiche:
PHP Fatal error: Uncaught Error: plugin o tema incompatibile; il percorso del file dice quale.PHP Parse error: un file modificato o un aggiornamento incompleto.Allowed memory size of ... bytes exhausted: limite di memoria..htaccess: Invalid command: errore di sintassi o modulo mancante.Permission denied: permessi o proprietario.Error establishing a database connection: database.
Soluzioni sul tuo server o sul tuo hosting con SSH
1. Disattivare il plugin o il tema colpevole
Su WordPress, rinomina la cartella del plugin: resta disattivato senza toccare il database.
cd /var/www/example.com/wp-content/plugins
mv nome-plugin nome-plugin.off
Se non sai quale sia, rinomina l’intera cartella plugins: il sito torna e riattivi i plugin uno alla volta. Per il tema, rinomina la sua cartella in wp-content/themes; WordPress passa a un tema predefinito. Con WP-CLI:
wp plugin list --status=active
wp plugin deactivate nome-plugin
Per leggere l’errore mentre cerchi la causa, attiva il debug in wp-config.php (e toglilo dopo); gli errori finiscono in wp-content/debug.log:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
2. Tornare alla versione di PHP che funzionava
php -v mostra la versione attiva e ls /etc/php/ quelle installate; su un hosting condiviso, la versione si sceglie nel pannello cliente. Torna alla versione precedente per rimettere online il sito e aggiorna poi il plugin colpevole prima di ripassare alla nuova.
3. Riparare il .htaccess
Rinomina il file per fare una prova: se il sito torna (anche con i link rotti), la causa è lì dentro.
mv .htaccess .htaccess.off
sudo apachectl -M | grep rewrite
Poi rimetti i blocchi uno alla volta. Un modulo mancante si attiva con sudo a2enmod rewrite; poi ricarica Apache.
4. Permessi e proprietario
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Sostituisci www-data con l’utente del tuo pool PHP-FPM.
5. Memoria
Alza memory_limit nel pool PHP-FPM o in php.ini e ricarica PHP-FPM. Su WordPress, define('WP_MEMORY_LIMIT', '256M'); in wp-config.php fa lo stesso, entro il limite del server. Controlla con free -m che la memoria basti.
6. Database
systemctl status mariadb
sudo systemctl start mariadb
df -h
Confronta le credenziali di wp-config.php con quelle del database; wp db repair sistema una tabella danneggiata.
Se il problema è presso il tuo provider di hosting
Se dalla tua parte non è cambiato nulla e i log sono vuoti, invia questo:
Buongiorno, il mio sito example.com restituisce “500 Internal Server Error” da circa le 9:30 (UTC). Non ho modificato nulla da parte mia e il log degli errori non mostra niente. C’è stato un cambio di versione di PHP o un problema sul server del mio account? Potete verificare e indicarmi quando il sito tornerà online?
Perché non succeda di nuovo
Un errore 500 arriva quasi sempre subito dopo un aggiornamento, e una verifica dall’esterno lo vede appena compare, prima dei tuoi visitatori. Il monitoraggio server tiene d’occhio anche lo spazio su disco, la memoria e i servizi, e ti avvisa prima che il database si fermi per mancanza di spazio. Se il sito è WordPress, gli aggiornamenti WordPress su richiesta, senza contratto, sistemano il plugin incompatibile prima che rompa qualcosa.
Down? Interveniamo. Sul tuo server o su un hosting condiviso con accesso SSH, il Quick Fix, l’intervento automatico a prezzo fisso, corregge i piccoli errori di configurazione, con una copia di backup prima; il Deep Fix si occupa del plugin incompatibile o della versione di PHP, a blocchi di 15 minuti, 24 ore su 24, anche nel fine settimana; la stima è il prezzo massimo.
E adesso
Verifica dall’esterno
Il sito è down per tutti o solo per te, e cosa risponde il server? Gratis, senza registrazione.
Website down checkerDown? Interveniamo.
Sul tuo server o su un hosting condiviso con accesso SSH: Quick Fix a prezzo fisso per le cause più comuni, Deep Fix fatturato a blocchi di 15 minuti per tutto il resto, 24/7. Prezzo visibile prima dell’ordine.
Ordina un interventoAltre guide
- Sito non raggiungibile: cosa fare nei primi 15 minuti
- Server down o non raggiungibile: cosa controllare e in che ordine
- Errore 502 Bad Gateway: trovare la causa e risolverlo
- Errore 503: sovraccarico, manutenzione o limite dell’hosting?
- Errore 504 Gateway Timeout: trovare cosa rallenta
- Errore 521 e 522 di Cloudflare: il server di origine non risponde
- DNS_PROBE_FINISHED_NXDOMAIN: il dominio non risponde più
- ERR_CONNECTION_REFUSED: il server rifiuta la connessione
- ERR_CONNECTION_TIMED_OUT: il server non risponde in tempo
- Cosa significa “La connessione non è privata” e come risolverlo
- ERR_SSL_PROTOCOL_ERROR: la connessione sicura fallisce prima del certificato
- ERR_TOO_MANY_REDIRECTS: trovare il ciclo di reindirizzamenti e chiuderlo
- Errore 403 Forbidden: cosa blocca l’accesso al tuo sito