Errore interno del server 500: cause e soluzioni

Un Errore interno del server 500 è uno dei problemi più comuni che proprietari e amministratori di siti web incontrano. Segnala che qualcosa è andato storto sul server, ma non fornisce diagnosi precise. Questo articolo spiega cosa scatena tipicamente un errore 500 e come risolverlo.
Possibili cause di un errore 500
Un errore 500 può verificarsi per molte ragioni. Le più frequenti sono:
- Problemi di risorse lato server
Spesso l'errore 500 può essere causato da problemi tecnici sul server, come la mancanza di risorse (RAM, tempo CPU).
- Errori nel codice del sito web
Script o codice del sito web possono contenere errori che causano un crash. Ciò può essere dovuto a richieste errate, errori nei file di configurazione o problemi con l'interazione dei componenti del sito.
- Problemi con il file .htaccess
Il file .htaccess viene utilizzato per configurare il web server e può contenere errori che si tradurranno in un errore 500. Ad esempio, regole di reindirizzamento errate o parametri scorretti possono causare un crash.
- Aggiornamenti recenti
Errori possono verificarsi dopo aggiornamenti al sito web o alle applicazioni del server, dove le modifiche non sono state gestite correttamente.
Come correggere un errore 500
- Controlla i log del web server
Per determinare la causa di un errore 500, il primo passo è controllare i log del server. Questi log contengono tipicamente informazioni sul fallimento, che si tratti di un errore di codice, una errata configurazione o un problema a livello di server. Tuttavia, è importante capire che i log del web server (come quelli di Nginx o Apache) spesso registrano solo l'occorrenza dell'errore e il codice di risposta, non la causa principale. Ciò è particolarmente vero per Nginx, che di solito agisce da proxy e inoltra semplicemente l'errore dall'applicazione backend.
A seconda del web server utilizzato, i log possono trovarsi nelle seguenti directory:
Apache:
-
Ubuntu/Debian:
/var/log/apache2/error.log -
CentOS/AlmaLinux/Rocky Linux:
/var/log/httpd/error.log
Nginx:
/var/log/nginx/error.log
Se il tuo server è gestito tramite un pannello di controllo come FASTPANEL, la visualizzazione dei log diventa ancora più semplice. Per fare ciò:
-
Accedi al pannello di controllo.
-
Apri la scheda del sito e individua la sezione “Log”.
-
La scheda “Log errori frontend” contiene gli errori del web server Nginx, mentre la scheda “Log errori backend” contiene gli errori di Apache.
Tieni presente che molti CMS e framework (WordPress, Laravel, Joomla, ecc.) mantengono i propri log degli errori. Questi log forniscono spesso informazioni più precise sulla causa di un errore 500. Consulta la documentazione della tua piattaforma per trovare dove sono memorizzati questi log.
I log ti forniranno molto probabilmente un'analisi dettagliata di ciò che è andato storto. Se l'errore 500 è stato innescato da una errata configurazione o da problemi di codice, puoi visualizzare i file, o persino le righe esatte, che causano il fallimento.
- Abilita la registrazione degli errori lato PHP
Per ottenere diagnosi più dettagliate, abilita la registrazione direttamente in PHP, particolarmente utile quando l'errore ha origine nel codice e non appare nei log del web server.
Per fare ciò, imposta i seguenti valori nel file php.ini:
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
Qui:
-
display_errors— sopprime l'output degli errori nel browser -
log_errors— scrive gli errori in un file di log -
error_log— percorso del file di log (PHP deve avere i permessi di scrittura)
Posizioni tipiche di php.ini:
-
Debian/Ubuntu:
/etc/php/*/apache2/php.inio/etc/php/*/cli/php.ini -
CentOS/AlmaLinux:
/etc/php.ini
Oppure individua tramite:
php -i | grep "php.ini"
In FASTPANEL: apri la scheda del sito → “Impostazioni PHP”, cerca variabili come display_errors, modifica i loro valori e fai clic su “Salva”.
- Controlla il file .htaccess
Se l'errore è comparso dopo aver modificato .htaccess, ripristina il file al suo stato precedente.
Se non sei sicuro di cosa sia cambiato esattamente, rinomina temporaneamente .htaccess (ad esempio, in .htaccess.bak) – se l'errore scompare, allora il problema è in questo file.
In questo caso, prova a ripristinare il file .htaccess da un backup, se disponibile, o utilizza il file .htaccess predefinito per il tuo CMS, che puoi ottenere da qui.
- Verifica i permessi e la proprietà dei file
Permessi impropri possono innescare un 500. Assicurati che la root del sito e tutti i file secondari abbiano i diritti e il proprietario corretti:
ls -laR /percorso/alla/radice/del/tuo/sito
Permessi consigliati:
-
Per le directory: 755 — lettura, scrittura ed esecuzione per il proprietario; lettura ed esecuzione per tutti gli altri.
-
Per i file: 644 — lettura e scrittura per il proprietario; sola lettura per tutti gli altri.
Proprietà:
File e cartelle dovrebbero appartenere all'utente del web server (es. www-data o apache).
Se necessario, puoi regolare i permessi e la proprietà utilizzando i seguenti comandi:
- Spostati nella directory principale del tuo sito:
cd /percorso/alla/directory/radice/del/sito
- Imposta la corretta proprietà e i permessi:
sudo chown -R tuo_utente_sito:tuo_utente_sito . && sudo chmod 644 . -R && sudo chmod +X . -R
Sostituisci tuo_utente_sito con l'utente e il gruppo effettivi che possiedono il tuo sito.
- Disabilita plugin e temi.
Per siti basati su CMS come WordPress, un errore 500 spesso deriva da conflitti tra plugin o temi. Disabilita tutti i plugin e passa a un tema predefinito per vedere se questo risolve il problema.
- Assicurati che il server disponga di risorse libere sufficienti per i tuoi siti.
- Verifica di avere abbastanza spazio libero su disco:
sudo df -h
- Verifica che il server non abbia esaurito gli inode:
sudo df -ih
- Verifica che il server abbia abbastanza RAM:
sudo free -mh
- Verifica il carico attuale della CPU:
sudo ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
- In alternativa, apri il monitor dei processi con il comando:
sudo top
Se hai esaurito lo spazio su disco o gli inode, puoi identificare quali file e directory consumano più spazio seguendo le istruzioni nell'articolo pertinente qui.
Se il carico di RAM o CPU è eccessivamente elevato, le cause possono variare. Inizia la tua indagine bloccando i bot dei motori di ricerca, poiché sono frequentemente la fonte di un carico elevato.
- Verifica che il DBMS sia integro.
Molto spesso si tratterà di MySQL; di seguito sono riportati alcuni rapidi passaggi per verificare se i tuoi database sono a posto.
- Conferma che il servizio MySQL sia in esecuzione:
sudo systemctl status mysql
- Controlla il log degli errori di MySQL:
sudo grep -i error /var/log/mysql/error.log
- Controlla tutti i database per eventuali errori:
mysqlcheck -A -c
Se vengono trovati errori, prima assicurati di avere backup dei database interessati. Se necessario, crea un dump con:
mysqldump -u [utente] -p [nome_database] > /percorso/al/file/dump.sql
-
Sostituisci
[utente]con il nome utente MySQL. -
Sostituisci
[nome_database]con il nome del database che desideri esportare. -
/percorso/al/dump.sqlè il percorso dove verrà salvato il file di dump.
Successivamente, esegui la procedura di correzione degli errori con mysqlcheck:
mysqlcheck -A --auto-repair -c
- Contatta il tuo provider di hosting.
Se non riesci a identificare il problema, potrebbe essere utile contattare il supporto del tuo provider di hosting. Può aiutare a identificare problemi sul server che non sono visibili a livello utente. Puoi saperne di più su come scegliere il provider di hosting giusto in questo articolo.
Conclusione
L'errore 500 non è una sentenza per il tuo sito web. Con l'aiuto di strumenti diagnostici di base, puoi scoprire rapidamente la causa e risolvere il problema. Se non sei sicuro delle tue capacità, puoi sempre rivolgerti a degli specialisti. È importante ricordare che un errore 500 trovato e risolto in tempo ti aiuterà a evitare problemi più seri in futuro.