Scripting

ID #1076 CGI-Script liefert "premature end of script headers"

Wenn ein CGI-Script (Perl, Python, oder sogar PHP) lediglich ein 500er-Fehler ausliefert und im error_log nur ein <code>Premature end of script headers<code> erscheint, so kann dies viele Ursachen haben.code>code>

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. (<code>chmod 755 script.plcode>)
  3. Ist der Interpreterpfad korrekt gesetzt?
    Stimmt der Pfad in der Shebang-Zeile? Perl liegt z.B. unter <code>/usr/bin/perlcode>.
  4. Hat das Script Syntax-Fehler?
    <code>perl -c script.plcode> (bzw. <code>php -l script.phpcode>) liefert entsprechende Fehlermeldungen oder eben:
    <code>script.pl syntax OKcode>
  5. Läßt sich das Programm starten?
    Mit <code>./script.plcode> 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!
    <code>Content-type: text/htmlcode> gefolgt von einer leeren Zeile sollte i.d.R. der HTTP-Header sein.
 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

huschi, zuletzt 2005-12-25 17:04     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   4 von 5 (2 Bewertungen)

Artikel kommentieren

Kommentar von Micha (2016-03-17 17:58:46):
An sich gute Fehlerbehandlung. Danke.

Bei Unix ist aber definitiv Linefeed LF = 0xA = 10 = \n am Zeilenende.

Gruß Micha