Michael Schröpl: Premature end of script headers..

Beitrag lesen

Hi Daniel,

Falsch. Sie sagt aus, dass das Script keinen (vollständigen) Header
ausgibt.
Das passiert vermutlich auch, wenn es den Interpreter nicht gibt.

wenn der Webserver eine CGI-Anwendung startet, dann muß er dafür ja ein
Programm ausführen (nämlich dasjenige, das er als Interpreter ausgedeutet
hat).
Als Ergebnis dieses Ausführungsversuchs bekommt der Server mindestens die
beiden folgenden Informationen zurück:
a) einen Returncode des Ausführungsversuchs
b) seine nach stdout gesendeten Ausgaben, welche letztlich an den Client
   zurück gesendet werden sollen.
Letzteres erfordert allerdings, daß der Webserver zuerst einen passenden
HTTP-Header davor bastelt (mit Änderungsdatum, Längenangabe etc.).
Bevor er das tut, kann er allerdings bereits den Returncode der versuchten
Ausführung des Skripts abfangen - und wenn dieser ungleich 0 ist (dies um-
faßt auch den Fall "Interpreter-Datei nicht gefunden", ebenso wie "x-Bit
nicht gesetzt" oder einige andere Fälle), dann wird der Ausführungsversuch
als gescheitert betrachtet, die stdout-Ausgabe verworfen und statt dessen
die entsprechende Fehlerbehandlung für "Internal Server Error" durchgeführt.

Insofern ergibt eine Referenz auf einen fehlenden Interpreter eher einen
"Error 500" als einen unvollständigen HTTP-Header.

Viele Grüße
      Michael