L’errore 500 “Internal Server Error” si verifica quando lo script inserito sul server non può essere eseguito, quando ci sono errori nello script o quando viene inserita un’istruzione errata nel file .htaccess. Questo elenco di ragioni per l’errore 500 non è esaustivo; ci sono molte altre ragioni per cui l’errore 500 può verificarsi. Tuttavia, i tre casi citati sono i più comuni.

Consideriamo innanzitutto il caso in cui sia stata inserita un’istruzione errata nel file .htaccess. Se si è sbagliato a scrivere il nome della direttiva richiesta o dei suoi parametri, nel file error.log si troverà qualcosa di simile al seguente errore:

[Wed Apr 14 17:01:38 2004] [alert] [client 217.16.16.16]

/home/uXXXXX/aaa.ru/www/.htaccess:Comando non valido 'DrectoryIndex',

forse scritto in modo errato o definito da un modulo non incluso nel server

configurazione

Il server web indicherà quale direttiva specifica ha considerato errata e dovrà essere corretta. In questo caso, il server web ha segnalato di non conoscere la direttiva DrectoryIndex. In effetti, non esiste una direttiva DrectoryIndex, ma DirectoryIndex. C’è un errore di battitura.

Se l’errore 500 si verifica quando si accede a uno script Perl situato nella directory cgi-bin, è necessario controllare i diritti di accesso a questo script. I permessi dovrebbero essere 755 (rwxrx-rx). In caso contrario, è necessario modificare i diritti a 755 utilizzando il comando chmod 755 script.pl nella shell unix o utilizzare FTP. Va notato a parte che i permessi per gli script devono essere impostati rigorosamente a 755.

Si prega di verificare se si è utilizzata la modalità di trasferimento dei file FTP corretta quando si è caricato lo script sul nostro server. Tutti gli script, così come qualsiasi altro file di testo, devono essere trasferiti via FTP in modalità testo (ASCII). Se è stata utilizzata la modalità di trasferimento file binaria, gli script probabilmente non funzioneranno.

Se, dopo aver verificato la correttezza dei diritti impostati sul file di script, l’errore non scompare, è necessario esaminare le ultime voci del file error.log, in cui il server web inserisce tutti i messaggi di errore. Si troverà quindi una riga come

[Fri Apr 9 15:05:31 2004] [error][client 217.16.16.16] Premature end of

intestazioni dello script: /home/uXXXX/aaa.ru/cgi-bin/script.pl

La prima cosa da fare quando si riceve un errore di questo tipo è verificare se lo script emette correttamente le intestazioni HTTP. Ogni script deve prima stampare una riga che indichi il tipo di contenuto corrispondente e solo in seguito direttamente ciò che l’utente vedrà (ad esempio, il codice HTML). Un esempio di riga per visualizzare il titolo di un normale documento HTML:

print "Content-type: text/html; charset=windows-1251\n\n";

Se, dopo aver inserito le intestazioni corrette, l’errore 500 non scompare, è necessario verificare il corretto funzionamento dello script nel suo complesso. Per farlo, è necessario accedere alla shell unix ed eseguire il comando di controllo della sintassi:

> perl -cw script.pl

sintassi script.pl OK

Se lo script presenta degli errori, è necessario correggerli utilizzando la diagnostica appropriata e verificare nuovamente la sintassi dello script.