Il temuto errore 500 internal server error. Sembra sempre arrivare nel momento più inopportuno e all’improvviso vi ritrovate lì a cercare di capire come rimettere online il vostro sito WordPress. Fidatevi di noi, ci siamo trovati tutti in questa situazione. Altri errori che si comportano in modo simile in cui potreste esservi imbattuti sono anche lo spaventoso errore nella connessione al database (error establishing a database connection) e il temuto schermo bianco della morte. Ma, a partire dal momento in cui il vostro sito va giù, cominciate a perdere visitatori e clienti. Per non parlare del fatto che questo non dà una bella immagine del vostro brand.

Oggi analizzeremo l’errore 500 internal server error, e vi illustreremo alcuni modi per ripristinare rapidamente il vostro sito. Vediamo, quindi, cosa causa questo errore e cosa potete fare per prevenirlo in futuro.

Che Cosa È un Errore 500 Internal Server Error?

Quando visitate un sito web, il browser invia una richiesta al server su cui è ospitato il sito. Il server accetta questa richiesta, la elabora e restituisce le risorse richieste (PHP, HTML, CSS, ecc.) insieme ad un’intestazione HTTP. L’intestazione HTTP include anche quello che viene chiamato codice di stato HTTP. Un codice di stato fornisce un modo per dare 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 molti tipi di codici di errore di stato 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 500Internal Server Error

A causa dei diversi 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:

  • “500 Internal Server Error”
  • “HTTP 500”
  • “Internal Server Error”
  • “HTTP 500 – Internal Server Error”
  • “500 Error”
  • “500 – Internal Server Error”
  • “500 Internal Server Error. Sorry something went wrong.”
  • “500. That’s an error. There was an error. Please try again later. That’s all we know.”
  • “The website cannot display the page – HTTP 500.”
  • Uno schermo bianco

Insieme ad uno di questi messaggi, potreste incontrare anche il seguente testo:

Il server ha riscontrato un errore interno o una configurazione errata e non è stato in grado di completare la richiesta. Si prega di contattare l’amministratore del server, webmaster@domain.com e informarlo dell’ora in cui si è verificato l’errore, e qualsiasi cosa tu abbia fatto che potrebbe aver causato l’errore. Ulteriori informazioni su questo errore potrebbero essere disponibili nel log degli errori del server.

Errore interno del server

Errore interno del server

I brand più grandi potrebbero anche avere messaggi personalizzati di errore 500 internal server error, 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

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 semplicemente scaricherà la pagina dalla cache. Ma Google potrebbe anche non avere nemmeno la possibilità 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 siete preoccupati che gli errori 500 possano ripetersi, dovreste capire per quale motivo si stanno verificando. Alcune delle soluzioni riportate di seguito potrebbero esservi di aiuto.

Come Risolvere l’Errore 500 Internal Server Error

Dove dovreste iniziare per risolvere il problema quando vedete un errore 500 internal server error sul vostro sito WordPress? A volte potreste anche non sapere da dove cominciare. In genere gli errori 500 si verificano sul server stesso, ma per la nostra esperienza, questi errori hanno origine da due cause: la prima è l’errore dell’utente (problema lato client) e la secondo è che c’è un problema sul server. Quindi analizzeremo un po’ entrambi.

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

1. Provate a Ricaricare la Pagina

Potrebbe sembrare un po’ ovvio a qualcuno, 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). Potrebbe essere che l’host o il server sia semplicemente sovraccarico e il sito tornerà subito online. Nell’attesa, potete anche provare velocemente un altro browser per escludere questo problema.

Un’altra cosa da fare è incollare l’indirizzo del sito web in downforeveryoneorjustme.com. Questo sito vi dirà se il sito è inattivo 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 vostro sito WordPress. Normalmente avviene su host che non sono configurati correttamente. Quello che succede è che si verifica un timeout temporaneo subito dopo l’aggiornamento. Tuttavia, le cose di solito si risolvono da sole in un paio di secondi, quindi tutto ciò che dovete fare è aggiornare la pagina.

2. Cancellate la Cache del Browser

Cancellare la cache del browser è sempre un altro buon passo per la risoluzione dei problemi prima di immergerti nel debug più profondo del tuo sito. Di seguito sono riportate le istruzioni su come farlo nei vari browser:

3. Controllate i Vostri Log del Server

Dovreste anche sfruttare i log degli errori. Se siete clienti di Kinsta, potete facilmente vedere 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 aggiungere il seguente codice al vostro file wp-config.php per abilitare il logging:

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)

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

  • Apache: /var/log/apache2/error.log
  • NGINX: /var/log/nginx/error.log

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

Suddivisione degli errori 500 - analisi delle risposte

Suddivisione degli errori 500 – analisi delle risposte

Se l’errore 500 viene visualizzato a causa di un PHP fatal error, potete anche provare a abilitare la segnalazione degli errori di PHP. Basta aggiungere il seguente codice al file che genera l’errore. In genere potete restringere la ricerca nel 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 con quanto segue:

display_errors = on

4. Errore Durante la Creazione di una Connessione al Database

Gli errori 500 internal server error possono originare anche da un errore di connessione al database. A seconda del vostro browser potreste vedere diversi errori. Ma tutti genereranno un codice di stato HTTP 500 indipendentemente dai log del server.

Di seguito è riportato un esempio di come appare un 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 dashboard di WordPress.

Esempio di errore durante la creazione di una connessione al database

Esempio di errore durante la creazione di una connessione al database

Quindi, qual è il motivo esatto per cui si verifica questo errore? Bene, ecco alcuni dei motivi più comuni.

  • Il problema più comune è che le credenziali di accesso al database non sono corrette. Il vostro sito WordPress utilizza informazioni di accesso separate per connettersi al suo database MySQL.
  • Il vostro database è corrotto. Con tante parti che cambiano con temi, plugin e utenti costantemente che li cancellano e li installano continuamente, a volte i database vengono danneggiati. Ciò può essere dovuto a una singola tabella mancante o danneggiata, o forse ad alcune informazioni che sono state cancellate accidentalmente.
  • Potreste avere file corrotti nella vostra installazione di WordPress. Questo a volte può anche accadere a causa di hacker.
  • Problemi con il server del database. Molte cose potrebbero essere in errore dal lato dell’host, come un sovraccarico del database causato da un picco di traffico, o la mancata risposta dovuta a un numero eccessivo di connessioni simultanee. Tutto questo è in realtà abbastanza frequente con gli host condivisi perché utilizzano le stesse risorse per molti utenti sugli stessi server.

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

5. Controllate 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 sempre di utilizzare 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 cosa l’abbia generato.

Un modo per risolvere questo problema è quello di disattivare tutti i plugin. Ricordate che non perderete alcun dato se disattivate un plugin. Se riuscite ancora ad accedere al pannello di amministrazione, potete navigare fino 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 questa soluzione risolve il problema, dovrete trovare il colpevole. 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 plugin che genera il problema. È quindi possibile 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 tua cartella dei plugin con un nome come plugins_old. Quindi controllate di nuovo il vostro sito. Se funziona, dovrete testare ogni plugin uno alla volta. Rinominate la cartella dei plugin in “plugins” e quindi rinominat la cartella di ognuno dei plugin al suo interno, finché non lo trovate. Si potrebbe 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 controllate per essere certi di avere una versione di PHP supportata. Se il problema nasce da un conflitto con codice errato di un plugin, potrebbe essere necessario coinvolgere 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 influire sui plugin o sui temi. Abbiamo una guida approfondita con 5 modi diversi 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 tipici per quanto riguarda le autorizzazioni su file e cartelle in WordPress:

  • Tutti i file devono essere 644 (-rw-r-r-) o 640.
  • Tutte le directory dovrebbero essere 755 (drwxr-xr-x) o 750.
  • Nessuna directory dovrebbe mai essere 777, anche la cartella degli upload.
  • Maggiore rigidità: si potrebbe anche impostare il file su 440 o 400 per impedire ad altri utenti sul server di leggerlo.

Consultate l’articolo del Codex di WordPress sulla modifica dei permessi sui file per una analisi più approfondita.

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 cartelle e file per assicurarvi che siano configurati correttamente.

Permessi sui file SFTP

Permessi sui file SFTP

8. PHP Memory Limit

Un errore del server interno potrebbe anche essere causato dall’esaurimento del limite di memoria PHP sul server. Potreste provare ad aumentare il limite. Seguite le istruzioni riportate di seguito per modificare questo 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. Sotto la voce Software, fate clic su “Seleziona la versione di PHP”.

Selezionare la versione di PHP

Selezionare la versione di PHP

Clicca su “Passa a Opzioni PHP”.

Configurare impostazioni di base PHP INI

Configurare impostazioni di base PHP INI

È quindi possibile 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 che è possibile utilizzare 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 vedi se dentro c’è un file .htaccess.

Il file .htaccess

Il file .htaccess

Se c’è, potete modificare questo file e aggiungere il codice necessario per aumentare il limite di memoria PHP. Molto probabilmente è impostato a 64M o meno: potete provare ad aumentare questo valore.

Alle prese con i tempi di inattività e problemi di WordPress? Kinsta è la soluzione di hosting progettata per farvi risparmiare tempo! Scopri i nostri servizi
php_value memory_limit 128M

Aumentare il limite di memoria PHP nel file php.ini

Se quanto 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’era 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 è possibile modificare i valori in base alle proprie esigenze.

memory_limit = 128M

Alcuni host condivisi potrebbero anche richiedere l’aggiunta della direttiva suPHP nel file .htaccess affinché le impostazioni del file php.ini 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 per voi non funziona, potrebbe essere che il vostro host abbia bloccato le impostazioni globali e invece sia configurato per utilizzare i file .user.ini. Per modificare il vostro file .user.ini, accedete al vostro sito tramite FTP o SSH, andate alla directory principale e aprite o create un file .user.ini. Incollare, quindi, il seguente codice:

memory_limit = 128M

Aumentare il limite di memoria PHP in wp-config.php

L’ultima opzione 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 metodi per la risoluzione dei problemi per aiutare i nostri clienti a restringere il campo dei plugin, delle query o degli 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 Vostro 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. Seguire i passaggi qui sotto per ricrearne uno nuovo 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 potete accedere al pannello di amministrazione di WordPress, quindi questa non sarà una soluzione praticabile. Pertanto, potete creare un nuovo file .htaccess e inserire i contenuti che seguono, quindi caricalo 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. Tuttavia, meritano ancora un cenno, specialmente per chi usa cPanel dove sono ancora in uso molti script CGI ad un clic. Come AEM su Stack Overflow dice:

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 per quando si lavora con gli script CGI:

  • Durante la modifica, utilizzate sempre un editor di testo piano, come Atom, Sublime o Notepad++. Questo assicura che rimangano in formato ASCII.
  • Assicuratevi che assegnate a script e directory CGI le autorizzazioni corrette di chmod 755.
  • Caricate gli script CGI in modalità ASCII (che potete selezionare nel vostro editor FTP) nella directory cgi-bin sul vostro server.
  • Confermate che i moduli Perl necessari per lo script siano installati e supportati.

11. Problemi di Server (Consultare il Vostro Host)

Infine, dato che si possono verificare anche errori 500 dovuti al timeout di PHP o ai fatal errors di PHP causati da plugin di terze parti, potete sempre chiedere una verifica al vostro host WordPress. 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 gli 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, che ha 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, nemmeno tra i vostri stessi siti.

I timeout PHP possono anche verificarsi a causa della mancanza di PHP worker, sebbene in genere questi causino errori 504, non errori 500. I PHP worker determinano quante richieste simultanee 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 su un sito i PHP worker sono già occupati, 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 comportare errori 500 o richieste incomplete. Leggete anche il nostro articolo approfondito sui PHP worker.

Monitorate il Vostro Sito

Se siete preoccupati che in futuro si verifichi questo tipo di errori sul vostro sito, potete anche utilizzare uno strumento come updown.io per monitorare e inviare una notifica notificare immediatamente nel caso dovessero verificarsi. 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:

  • 15 secondi
  • 30 secondi
  • 1 minuto
  • 2 minuti
  • 5 minuti
  • 10 minuti

Vi invierà un’e-mail se e quando il vostro sito va giù. Ecco un esempio.

Notifica email degli errori 500

Notifica email degli errori 500

Questo può essere particolarmente utile 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. Assicuratevi di controllare il nostro post che descrive 9 dei principali motivi per scegliere l’hosting gestito per WordPress.

Riepilogo

Gli errori 500 internal server error sono sempre frustranti, ma noi speriamo che ora abbiate appreso alcuni modi 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 un altro consiglio per risolvere gli errori 500 internal server error. Se è così, scriveteci due righe nei commenti qui sotto.

93
Condivisioni