Der Fehler 500 „Internal Server Error“ tritt auf, wenn das Skript, das Sie auf dem Server platziert haben, nicht ausgeführt werden kann, wenn es Fehler im Skript gibt oder wenn eine falsche Anweisung in der .htaccess-Datei platziert ist. Diese Liste der Gründe für den 500-Fehler ist nicht erschöpfend; es gibt viele weitere Gründe, warum der 500-Fehler auftreten kann. Die drei genannten Fälle sind jedoch die häufigsten.

Betrachten wir zunächst den Fall, dass Sie eine falsche Anweisung in der .htaccess-Datei platziert haben. Wenn Sie einen Fehler bei der Schreibweise des Namens der erforderlichen Anweisung oder ihrer Parameter gemacht haben, werden Sie in der Datei error.log etwa folgenden Fehler finden:

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

/home/uXXXXX/aaa.ru/www/.htaccess:Invalid command 'DrectoryIndex',

perhaps mis-spelled or defined bya module not included in the server

configuration

 

Der Webserver teilt Ihnen mit, welche spezifische Richtlinie er als fehlerhaft ansieht und korrigiert werden muss. In diesem Fall meldete der Webserver, dass er die Richtlinie DrectoryIndex nicht kennt. Und in der Tat, es gibt keine DrectoryIndex-Direktive, sondern DirectoryIndex. Es liegt ein Tippfehler vor.

Wenn der Fehler 500 beim Zugriff auf ein Perl-Skript im Verzeichnis cgi-bin auftritt, müssen Sie die Zugriffsrechte für dieses Skript überprüfen. Die Berechtigungen sollten 755 (rwxrx-rx) sein. Ist dies nicht der Fall, müssen Sie die Rechte mit dem Befehl chmod 755 script.pl in der Unix-Shell auf 755 ändern oder FTP dafür verwenden. Es ist gesondert zu beachten, dass die Rechte für Skripte strikt auf 755 gesetzt werden müssen.

Bitte überprüfen Sie, ob Sie beim Hochladen des Skripts auf unseren Server den richtigen FTP-Übertragungsmodus verwendet haben. Alle Skripte, wie auch alle anderen Textdateien, müssen per FTP im Textmodus (ASCII) übertragen werden. Wenn der binäre Dateiübertragungsmodus verwendet wurde, werden die Skripte wahrscheinlich nicht funktionieren.

Wenn der Fehler nach der Überprüfung der Korrektheit der eingestellten Rechte für die Skriptdatei nicht verschwindet, müssen Sie die letzten Einträge in der Datei error.log überprüfen – der Webserver legt alle Fehlermeldungen in dieser Datei ab. So finden Sie eine Zeile wie

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

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

 

Das erste, was Sie tun müssen, wenn Sie einen solchen Fehler erhalten, ist zu prüfen, ob das Skript die HTTP-Header korrekt ausgibt. Jedes Skript muss zunächst eine Zeile ausgeben, die den entsprechenden Inhaltstyp angibt, und erst dann direkt das, was der Benutzer sehen wird (z. B. HTML-Code). Eine Beispielzeile für die Anzeige des Titels eines regulären HTML-Dokuments:

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

 

Wenn der Fehler 500 nach der Eingabe der korrekten Kopfzeilen nicht verschwindet, müssen Sie die korrekte Funktionsweise des gesamten Skripts überprüfen. Dazu müssen Sie sich Zugang zur Unix-Shell verschaffen und dann den Befehl zur Syntaxprüfung ausführen:

perl -cw script.pl

script.pl syntax OK

Wenn das Skript mit Fehlern geschrieben wurde, müssen diese mit Hilfe der entsprechenden Diagnosen korrigiert werden, und die Skriptsyntax muss erneut überprüft werden.