Ich erhalte "Internal Server Error" beim Aufruf meiner Seite. Was ist zu tun?
Dieser Fehler kann verschiedene Ursachen haben.
1. Bei einem CGI-Skript
Hier gibt es drei Möglichkeiten für den Fehler. Wenn das Skript
sich nicht im Ordner cgi-bin befindet, sollten Sie im Confixx die
Option
CGI/Perl außerhalb cgi-bin aktivieren. Diesen Punkt finden Sie
in der Confixx-Übersicht.
Scheidet diese erste Möglichkeit aus, sollten Sie die Rechte des
Skriptes überprüfen.Diese sollten sowohl für das Verzeichnis (meistens
cgi-bin), als auch für das Skript selbst 755 sein. Beachten Sie dazu
auch den Artikel über Dateirechte.
Ist auch das nicht die Ursache, kommt ein Problem mit den Zeilenenden in
Frage. Sie müssen wissen, dass Windows anders als Unix Zeilenenden in
Textdateien anders abspeichert. Windows verwendet dazu einen
CarriageReturn (Wagenrücklauf) und ein NewLine (neue Zeile). Unix
lediglich ein NewLine.
In der Regel sieht die erste Zeile eines
CGI-Skripts in etwa so aus:
#!/usr/bin/perl |
Da Windows nun noch den Wagenrücklauf einfügt, "sieht" Unix diesen Pfad
nun so:
#!/usr/bin/perl\CR |
Diesen Intepreter gibt es jedoch nicht, die Shell gibt "Bad Interpreter"
zurück, ohne einen Content-Type zu senden. Der Apache quittiert das
dann mit einem "Premature end of script headers", im Browser sieht man
dann die besagte Fehlermeldung. Man kann das in diesem Beispiel
verhindern, indem man einen unkritischen Parameter hinter den
Interpreterpfad schreibt. Bei Perl ist das bspw. -X, um die Warnungen
abzuschalten.
Die erste Zeile sollte also folgendermaßen aussehen:
#!/usr/bin/perl -X |
2. Bei einer .htaccess Datei
Befindet sich irgendwo im Suchpfad eine .htaccess-Datei sollte diese
genauer untersucht werden. Viele Standard-.htaccess-Dateien enthalten
Direktiven, die auf unseren Servern Probleme verursachen. Dazu zählen
insbesondere Options, php_value und php_flag. Alle Zeilen in der
.htaccess die mit diesen Direktiven beginnen, sollten Sie aus der
.htaccess entfernen oder mit einer Raute (#) auskommentieren.
Einige
Beispiele:
Options
+FollowSymLinks |
Verboten | ||
php_flag
register_globals_off |
Verboten , diese Einstellung können Sie im Confixx unter httpd-Spezial vornehmen. |