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:

  1. 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).
  2. Sind die Rechte korrekt?
    Der User muß stimmen (vorallem wenn suExec genutzt wird) und das Script muss Ausführrechte haben. (chmod 755 script.pl)
  3. Ist der Interpreterpfad korrekt gesetzt?
    Stimmt der Pfad in der Shebang-Zeile? Perl liegt z.B. unter /usr/bin/perl.
  4. Hat das Script Syntax-Fehler?
    perl -c script.pl (bzw. php -l script.php) liefert entsprechende Fehlermeldungen oder eben:
    script.pl syntax OK
  5. 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.

Kategorien:

Stichwörter:

cgi · script · perl · php · shebang · test · http · header · chmod ·