Wenn ein CGI-Script (Perl, Python, oder sogar PHP) lediglich ein 500er-Fehler ausliefert und im error_log nur ein Premature end of script headers
erscheint, so kann dies viele Ursachen haben.
Hier mal die typischen Fehlerquellen:
- Ist das Script im korrekten Modus (ASCII) hochgeladen?
Evtl. mit dos2unix nach arbeiten. Hier kommt es vorallem auf den richtigen Abschluß der Shebang-Zeile an. Es darf dort kein \0x10 (also Zeilenvorschub) stehen sondern nur ein \0x13 (CR == Carrige Return). - Sind die Rechte korrekt?
Der User muß stimmen (vorallem wenn suExec genutzt wird) und das Script muss Ausführrechte haben. (chmod 755 script.pl
) - Ist der Interpreterpfad korrekt gesetzt?
Stimmt der Pfad in der Shebang-Zeile? Perl liegt z.B. unter/usr/bin/perl
. - Hat das Script Syntax-Fehler?
perl -c script.pl
(bzw.php -l script.php
) liefert entsprechende Fehlermeldungen oder eben:
script.pl syntax OK
- Läßt sich das Programm starten?
Mit./script.pl
testet man dann, ob es
a) korrekt aufgerufen werden kann und
b) HTML-Code mit mind. einem HTTP-Header liefert.
Schlägt a) schon fehl, hat man die Punkte 1 bis 3 übersprungen!
Content-type: text/html
gefolgt von einer leeren Zeile sollte i.d.R. der HTTP-Header sein.