Il temuto errore 500 internal server error sembra sempre arrivare nel momento meno opportuno. All’improvviso vi ritrovate lì a cercare di capire come rimettere online il vostro sito WordPress. Fidatevi, ci siamo trovati tutti in questa situazione. Altri errori del genere in cui potreste esservi imbattuti sono il terribile errore nello stabilire una connessione al database e il tanto temuto schermo bianco della morte. Dal momento in cui il vostro sito va giù, cominciate a perdere visitatori e clienti. Per non parlare del fatto che questo non offre una bella immagine del vostro brand.

Oggi analizzeremo l’errore 500 internal server error e vi illustreremo alcuni metodi per ripristinare rapidamente il vostro sito. Vediamo, quindi, qual è la causa di questo errore e cosa si può fare per evitare che vi si ripresenti in futuro.

Che Cosa È un Errore 500 Internal Server Error?

L’Internet Engineering Task Force (IETF) definisce l’errore 500 Internal Server Error in questo modo:

Il codice di stato 500 (Internal Server Error) indica che il server ha incontrato una condizione inaspettata che gli ha impedito di soddisfare la richiesta.

Quando visitate un sito web, il browser invia una richiesta al server su cui è ospitato il sito. Il server prende questa richiesta, la elabora e restituisce le risorse richieste (PHP, HTML, CSS, ecc.) insieme ad un’intestazione HTTP. L’intestazione HTTP contiene anche il cosiddetto codice di stato HTTP. Un codice di stato fornisce informazioni sullo stato della richiesta. Potrebbe essere un codice di stato 200, che significa “È tutto OK”, o un codice di stato 500, che significa che qualcosa è andato storto.

Esistono numerosi codici di stato di errore 500 (500, 501, 502, 503, 504, ecc.) ed ognuno ha un significato diverso. In questo caso, un errore 500 internal server error indica che il server ha rilevato una condizione imprevista che gli ha impedito di soddisfare la richiesta (RFC 7231, sezione 6.6.1).

Errore 500 Internal server error in WordPress

Errore 500 Internal server error in WordPress

Varianti dell’Errore 500 Internal Server Error

Data la diversità di server web, sistemi operativi e browser, un errore 500 internal server error può presentarsi in diversi modi, ma tutti dicono la stessa cosa. Di seguito sono riportate solo alcune delle diverse varianti che potreste vedere sul web:

Con uno di questi messaggi, potreste trovare anche il seguente testo:

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.

Errore interno del server

Errore interno del server

Altre volte, potreste semplicemente vedere una schermata vuota. In browser come Firefox e Safari questo in realtà è abbastanza frequente con gli errori 500 internal server error.

500 internal server error in Firefox

500 internal server error in Firefox

I brand più grandi potrebbero anche avere messaggi di errore 500 internal server error personalizzati, come questo di Airbnb.

Errore 500 internal server error di Airbnb

Errore 500 internal server error di Airbnb

Ecco un altro esempio creativo di errore 500 del server di quelli di readme.

Errore 500 internal server error di readme

Errore 500 internal server error di readme

Anche il potente YouTube non è al riparo dagli errori 500 internal server error.

Errore 500 internal server error di YouTube

Errore 500 internal server error di YouTube

I server IIS 7.0 (Windows) o superiore hanno codici di stato HTTP aggiuntivi per indicare in modo più preciso la causa dell’errore 500:

Gli Errori 500 Influenzano la SEO

A differenza degli errori 503, che vengono utilizzati per la modalità di manutenzione di WordPress e dicono a Google di ricontrollare in un secondo momento, un errore 500 può avere un impatto negativo sulla SEO se non viene risolto immediatamente. Se il vostro sito è giù solo per 10 minuti, e viene ripetutamente sottoposto a scansione, il crawler si limiterà a scaricare la pagina dalla cache perché Google potrebbe non avere il tempo di eseguire nuovamente la scansione prima di eseguire il backup. In questo caso per voi va bene.

Tuttavia, se il sito è giù per un lungo periodo di tempo, diciamo per più di 6 ore, Google potrebbe vedere l’errore 500 come un problema a livello di sito che deve essere risolto. Questo potrebbe influire sul vostro ranking. Se pensate che gli errori 500 possano ripetersi, dovreste capire quale sia il motivo per cui si stanno verificando. Potrebbero esservi di aiuto alcune delle soluzioni riportate qui di seguito.

Come Risolvere l’Errore 500 Internal Server Error

Da dove iniziare per risolvere il problema che causa l’errore 500 internal server error sul vostro sito WordPress? A volte potreste anche non sapere nemmeno da dove cominciare. In genere gli errori 500 si verificano sul server stesso, ma nella nostra esperienza questi errori hanno origine da due cause: la prima è l’errore dell’utente (problema lato client) e la seconda è che c’è un problema sul server. Quindi daremo un’occhiata ad entrambe le situazioni.

Ecco un elenco di cause frequenti e di soluzioni disponibili per correggere l’errore 500 internal server error e tornare subito operativi.

1. Provare a Ricaricare la Pagina

A qualcuno potrebbe sembrare un po’ ovvio, ma una delle cose più semplici e da provare prima quando ci si imbatte in un errore 500 è quella aspettare un minuto o poco più e ricaricare la pagina (F5 o Ctrl + F5). Può darsi che l’host o il server sia semplicemente sovraccarico e il sito torni subito online. Nell’attesa, potete anche provare velocemente un altro browser.

Un’altra cosa da fare è incollare l’indirizzo del sito web in downforeveryoneorjustme.com. Questo sito vi dirà se il sito è down o se è un problema dal vostro lato. Uno strumento come questo controlla il codice di stato HTTP che viene restituito dal server. Se è diverso da un 200 “Everything is OK”, riporterà l’informazione che il sito è giù.

downforeveryoneorjustme

downforeveryoneorjustme

Abbiamo anche notato che a volte ciò può verificarsi immediatamente dopo aver aggiornato un plugin o un tema sul sito WordPress. Normalmente avviene su host che non sono configurati correttamente. Quello che succede è che subito dopo l’aggiornamento si verifica un timeout temporaneo. Ma le cose di solito si risolvono da sole in un paio di secondi, quindi tutto ciò che dovete fare è aggiornare la pagina.

2. Cancellare la Cache del Browser

Cancellare la cache del browser è sempre un’altra cosa da fare per diagnosticare i problemi prima di infilarvi nel debug del sito. Di seguito sono riportate le istruzioni su come cancellare la cache nei vari browser:

3. Controllare i Log del Server

Dovreste anche sfruttare i log degli errori. Se siete clienti di Kinsta, potete vedere facilmente gli errori nel visualizzatore dei log nel cruscotto di MyKinsta. Questo può aiutarvi a restringere rapidamente il campo di ricerca del problema, soprattutto se dovesse essere generato da un plugin presente sul vostro sito.

Controllate i log per gli errori 500 internal server error

Controllate i log per gli errori 500 internal server error

Se il vostro host non ha uno strumento di registro, potreste attivare la modalità di debug di WordPress aggiungendo il seguente codice al file wp-config.php e abilitare i log:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

I log si trovano in genere nella directory /wp-content. In altri casi, come qui da Kinsta, potrebbe esserci una cartella dedicata chiamata “logs”.

Cartella del registro degli errori di WordPress (SFTP)

Cartella del registro degli errori di WordPress (SFTP)

È possibile anche controllare i file di registro in Apache e NGINX, che normalmente si trovano qui:

Se siete clienti di Kinsta, potete anche sfruttare il nostro strumento di analisi per avere una scomposizione del numero totale degli errori 500 e vedere quando e con quale frequenza questi si verificano. Lo strumento di analisi può aiutarvi a risolvere i problemi nel momento stesso in cui si verificano, o di vedere se c’è stato qualcosa che si è risolto da solo.

Scomposizione degli errori 500 - analisi delle risposte

Scomposizione degli errori 500 – analisi delle risposte

Identifica e risolvi facilmente gli errori nel visualizzatore di log della potente dashboard centralizzata MyKinsta. Prova Kinsta gratuitamente.

Se l’errore 500 è causato da un errore fatale di PHP, potete anche provare a abilitare la segnalazione degli errori PHP. Basta aggiungere il seguente codice al file che genera l’errore. In genere, potete restringere il campo di ricerca del file nella scheda della console di Google Chrome DevTools.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Potrebbe essere necessario modificare anche il file php.ini aggiungendo il codice che segue:

display_errors = on

4. Errore nello Stabilire una Connessione al Database

Gli errori 500 internal server error possono originare anche da un errore di connessione al database. Questi errori possono essere diversi a seconda del browser utilizzato. Ma tutti genereranno un codice di stato HTTP 500, indipendentemente da quello che viene registrato nei log del server.

Di seguito è riportato un esempio di messaggio di “errore durante la creazione di una connessione al database” nel browser. L’intera pagina è vuota perché non è possibile recuperare dati per eseguire il rendering, dato che la connessione non funziona correttamente. Questo non solo interrompe il front-end del sito, ma impedisce anche di accedere alla bacheca di WordPress.

Esempio di errore durante la creazione di una connessione al database

Esempio di errore durante la creazione di una connessione al database

Qual è dunque il motivo esatto per cui si verifica questo errore? Ecco alcuni dei motivi più comuni.

Date un’occhiata al nostro post approfondito in cui è spiegato come correggere l’errore durante la creazione di una connessione al database in WordPress.

5. Controllare Temi e Plugin

Plugin e temi di terze parti possono facilmente causare errori 500. Ne abbiamo riscontrati di diversi tipi qui su Kinsta, dai plugin di slider ai plugin di rotazione degli annunci. Spesso potreste vedere l’errore subito dopo aver installato qualcosa di nuovo o aver eseguito un aggiornamento. Questo è uno dei motivi per cui consigliamo di utilizzare sempre un ambiente di staging per gli aggiornamenti o almeno di eseguire gli aggiornamenti uno alla volta. In caso contrario, se si verifica un errore 500, ci si trova all’improvviso a dover capire in fretta cosa l’abbia generato.

Un modo per risolvere questo problema è quello di disattivare tutti i plugin. Ricordate che se disattivate un plugin non perdete alcun dato. Se riuscite ancora ad accedere al pannello di amministrazione, potete andare alla pagina dei “Plugin” e selezionare “Disattiva” dal menu delle azioni di gruppo. Questa azione disabiliterà tutti i vostri plugin.

Disattivare tutti i plugin

Disattivare tutti i plugin

Se così risolvete il problema, dovrete trovare il plugin che causa l’errore. Iniziate ad attivarli uno alla volta, ricaricando il sito dopo ogni attivazione. Quando vedrete di nuovo il messaggio di errore 500 internal server error, avrete trovato il colpevole. Potrete quindi contattare lo sviluppatore del plugin per chiedere aiuto o pubblicare un ticket di supporto nella repository di WordPress.

Se non riuscite ad accedere al vostro pannello di amministrazione, potrete accedere via FTP al vostro server e rinominare la cartella dei plugin con un nome come plugins_old. Quindi controllate di nuovo il vostro sito. Se funziona, dovrete testare i plugin uno alla volta. Rinominate la cartella dei plugin in “plugins” e poi rinominate la cartella di ognuno dei plugin al suo interno, finché non lo individuate. Potreste anche provare prima in un sito di staging.

Rinominare la cartella dei plugin

Rinominare la cartella dei plugin

Assicuratevi sempre che i plugin, i temi e il core di WordPress siano aggiornati e accertatevi di avere una versione di PHP supportata. Se il problema nasce da un conflitto con codice errato di un plugin, potrebbe essere necessario contattare uno sviluppatore WordPress per risolvere il problema.

6. Reinstallare il Core di WordPress

A volte i file del core di WordPress possono essere danneggiati, specialmente su siti meno recenti. In realtà è abbastanza semplice caricare di nuovo solo il core di WordPress senza toccare temi o plugin. Al riguardo abbiamo pubblicato una guida approfondita con 5 diversi metodi per reinstallare WordPress. E, naturalmente, assicuratevi di fare un backup prima di procedere. Saltate a una delle sezioni seguenti:

7. Errore sui Permessi

Anche un errore sui permessi su un file o una cartella sul server può causare un errore 500 internal server error. Ecco alcuni consigli che riguardano le autorizzazioni su file e cartelle in WordPress:

Per una analisi più approfondita, consultate l’articolo del Codex di WordPress sulla modifica dei permessi sui file.

I permessi sui file possono essere visualizzati con un client FTP (come mostrato qui sotto). Potete anche contattare il team di supporto del vostro host di WordPress e chiedere loro di eseguire un comando GREP su file e cartelle per assicurarvi che siano configurati correttamente.

Permessi sui file SFTP

Permessi sui file SFTP

8. PHP Memory Limit

Un errore interno del server potrebbe anche essere causato dal raggiungimento del limite di memoria PHP sul server. Potreste provare ad aumentare il limite. Seguite le istruzioni riportate di seguito per modificare il limite in cPanel, Apache, nel vostro file php.ini e nel file wp-config.php.

Aumentare il Limite di Memoria PHP in cPanel

Se siete su un host che utilizza cPanel, potete facilmente modificare il valore di memory_limit dall’interfaccia utente. Alla voce Software, fate clic su “Seleziona la versione di PHP”.

Selezionare la versione di PHP

Selezionare la versione di PHP

Cliccate poi su “Passa a Opzioni PHP”.

Configurare impostazioni di base PHP INI

Configurare impostazioni di base PHP INI

Potrete quindi fare clic sull’attributo memory_limit e modificarne il valore. Quindi fare clic su “Salva”.

Aumentare il limite di memoria PHP in cPanel

Aumentare il limite di memoria PHP in cPanel

Aumentare il Limite di Memoria PHP in Apache

Il file .htaccess è uno speciale file nascosto che contiene varie impostazioni utili per modificare il comportamento del server, fino a un livello specifico di directory. Per prima cosa, accedete al vostro sito tramite FTP o SSH, date un’occhiata alla vostra directory principale e vedete se dentro c’è un file .htaccess.

Il file .htaccess

Il file .htaccess

Se lo trovate, potete modificarlo aggiungendo il codice necessario per aumentare il limite di memoria PHP. Molto probabilmente è impostato a 64M o meno: potete provare ad aumentare questo valore.

php_value memory_limit 128M

Aumentare il Limite di Memoria PHP nel File php.ini

Se la soluzione illustrata sopra non funziona, potreste provare a modificare il vostro file php.ini. Accedete al vostro sito tramite FTP o SSH, andate alla directory principale del vostro sito e aprite o create un file php.ini.

Il file php.ini

Il file php.ini

Se il file c’e già, cercate le tre impostazioni e modificatele se necessario. Se avete appena creato il file, o non trovate le impostazioni da nessuna parte, potete incollare il codice che segue. Naturalmente potrete modificare i valori in base alle vostre esigenze.

memory_limit = 128M

Alcuni host condivisi potrebbero anche richiedere di aggiungere la direttiva suPHP nel file .htaccess affinché le impostazioni del file php.ini descritte sopra funzionino correttamente. A questo scopo, modificate il vostro file .htaccess, anche questo presente nella root del sito, e aggiungete il seguente codice nella parte superiore del file:

<IfModule mod_suphp.c> 
suPHP_ConfigPath /home/yourusername/public_html
</IfModule>

Se questo non risolve il vostro problema, potrebbe essere che il vostro host abbia bloccato le impostazioni globali e invece sia configurato in modo da utilizzare i file .user.ini. Per modificare il vostro file .user.ini, accedete al vostro sito tramite FTP o SSH, andate alla directory root e aprite o create un file .user.ini. Incollate, quindi, il seguente codice:

memory_limit = 128M

Aumentare il Limite di Memoria PHP in wp-config.php

L’ultima soluzione non è la nostra preferita, ma se tutto il resto dovesse fallire, potete comunque provarla. Innanzitutto, accedete al vostro sito tramite FTP o SSH e individuate il vostro file wp-config.php, che di solito si trova nella root del sito.

Il file wp-config.php

Il file wp-config.php

Aggiungete il seguente codice all’inizio del file wp-config.php:

define('WP_MEMORY_LIMIT', '128M');

Potete anche chiedere al vostro host se avete problemi di limiti di memoria. Noi di Kinsta utilizziamo New Relic e altri strumenti per la diagnosi e risoluzione dei problemi per aiutare i nostri clienti a individuare i plugin, le query o gli script che potrebbero esaurire il limite. Potete anche utilizzare la vostra chiave New Relic personale.

Debugging con New Relic

Debugging con New Relic

9. Problemi Con il File .htaccess

Kinsta utilizza solo Nginx, ma se siete con un host WordPress che usa Apache, potrebbe succedere che il vostro file .htaccess abbia un problema o sia stato danneggiato. Seguite i passaggi qui sotto per creare un nuovo file .htaccess da zero.

Innanzitutto, accedete al vostro sito tramite FTP o SSH e rinominate il file .htaccess in .htaccess_old.

Rinominare il file .htaccess

Rinominare il file .htaccess

Normalmente, per ricreare questo file basta semplicemente salvare di nuovo i vostri permalink in WordPress. Tuttavia, se vi trovate nel mezzo di un errore 500 internal server error, probabilmente non potrete accedere al pannello di amministrazione di WordPress, quindi questa non sarà una soluzione praticabile. Pertanto, potreste creare un nuovo file .htaccess e inserire i contenuti che seguono, quindi caricarlo sul server.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Fate riferimento al Codex di WordPress per altri esempi, come generare un file .htaccess predefinito per un’istallazione multisite.

10. Errori di Codifica o di Sintassi nel Vostro Script CGI/Perl

Errori 500 causati da errori in CGI e Perl sono molto meno comuni di quanto non fossero in passato. Ma meritano comunque un accenno, specialmente per chi utilizza cPanel, dove sono ancora in uso molti script CGI ad un clic. Come dice AEM su Stack Overflow:

CGI è stato sostituito da una vasta gamma di tecnologie di programmazione web, tra cui PHP, varie estensioni di Apache come mod_perl, vari gusti di Java e framework tra cui Java EE, Struts, Spring, ecc. Framework basati su Python come Django, Ruby on Rails e molti altri framework Ruby, oltre a varie tecnologie Microsoft.

Ecco alcuni suggerimenti utili quando si lavora con gli script CGI:

Identifica e risolvi facilmente gli errori nel visualizzatore di log della potente dashboard centralizzata MyKinsta. Prova Kinsta gratuitamente.

11. Problemi di Server (Consultate il Vostro Host)

Infine, dato che si possono verificare anche errori 500 dovuti al timeout di PHP o ai fatal error di PHP causati da plugin di terze parti, potete sempre chiedere al vostro host WordPress di fare una verifica. A volte questi errori possono essere difficili da risolvere senza l’aiuto di un esperto. Ecco alcuni esempi di errori frequenti che attivano codici di stato HTTP 500 sul server che potrebbero procurarvi dei grattacapi.

PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error()...
PHP message: PHP Fatal error: Uncaught Error: Cannot use object of type WP_Error as array in /www/folder/web/shared/content/plugins/plugin/functions.php:525

Qui da Kinsta monitoriamo tutti i siti dei nostri clienti e mandiamo automaticamente una notifica quando si verifica questo tipo di errore. Questo ci consente di essere proattivi e iniziare a lavorare per risolvere il problema immediatamente. Utilizziamo inoltre host gestiti LXD e container software LXC orchestrati per ciascun sito. Ciò significa che ogni sito WordPress è ospitato in un proprio container isolato, dotato di tutte le risorse software necessarie per l’esecuzione (Linux, Nginx, PHP, MySQL). Le risorse sono private al 100% e non sono condivise con nessun altro sito, nemmeno tra i vostri stessi siti.

I timeout PHP possono verificarsi anche a causa della mancanza di PHP worker, sebbene in genere questi causino errori 504, non errori 500. I PHP worker determinano il numero di richieste simultanee che il vostro sito può gestire in un dato momento. Per dirla in modo semplice, ogni richiesta non presente nella cache è gestita da un PHP Worker.

Quando i PHP worker di un sito sono già impegnati, iniziano a creare una coda. Una volta raggiunto il limite di PHP worker, la coda inizia a far uscire le richieste più vecchie che potrebbero generare errori 500 o richieste incomplete. Leggete anche il nostro articolo approfondito sui PHP worker.

Monitorate il Proprio Sito

Se siete preoccupati che si verifichi ancora questo tipo di errori sul vostro sito, potete anche utilizzare uno strumento come updown.io per monitorare e inviare immediatamente una notifica nel caso dovesse succedere. Il servizio invia periodicamente una richiesta HEAD HTTP all’URL di vostra scelta. Potete semplicemente usare la vostra homepage. Lo strumento vi permette di impostare frequenze di controllo di:

Vi sarà inviata un’email se e quando il vostro sito va giù. Ecco un esempio.

Notifica email degli errori 500

Notifica email degli errori 500

Questo può essere utile soprattutto se state provando ad eseguire il debug di un plugin difettoso o di un host condiviso, che tende a sovraffollare i propri server. Questo può darvi la prova di quanto spesso il vostro sito potrebbe effettivamente andar giù (anche nel mezzo della notte). Ecco perché consigliamo sempre di scegliere un host WordPress gestito. Date anche un’occhiata al nostro post che descrive 9 dei principali motivi per cui scegliere l’hosting gestito per WordPress.

Riepilogo

Gli errori 500 internal server error sono sempre irritanti, ma ci auguriamo che ora abbiate gli strumenti necessari per risolverli e ripristinare rapidamente il funzionamento del vostro sito. Ricordate, in genere questo tipo di errori è causato da plugin di terze parti, errori fatali di PHP, problemi di connessione al database, problemi con il vostro file .htaccess o da limiti di memoria PHP, e qualche volta anche da timeout PHP.

Abbiamo dimenticato qualcosa? Forse avete altri consigli per risolvere gli errori 500 internal server error. Se è così, scriveteci due righe nei commenti qui sotto.


Risparmia tempo e costi e massimizza le prestazioni del sito con:

  • Aiuto immediato dagli esperti dell’hosting WordPress, 24/7.
  • Integrazione di Cloudflare Enterprise.
  • Copertura globale del pubblico con 28 data center in tutto il mondo.
  • Ottimizzazione del sito con il nostro Monitoraggio delle Prestazioni delle Applicazioni integrato.

Tutto questo e molto altro, in un piano senza contratti a lungo termine, con migrazioni assistite e una garanzia di 30 giorni di rimborso. Scopri i nostri piani o contattaci per trovare il piano che fa per te.