Error : Premature end of script headers
Alex B
- cgi
Hallo,
Mit folgendem Script bekomme ich von einem Server immer einen "Internal Server Error" zurück.
# Ausgabe des Kopfs
print "Content-Type: text/html\n\n";
print "<html>\n<head>\n";
print "<titel>Hallo Welt</titel>\n";
print "</head>\n<body>";
# Ausgabe des Textes
print "<h1>Hallo Welt!</h1>\n";
# Ausgabe des Fusses
print "</body>\n</html>";
exit;
In der Error-log steht folgendes:
[Wed Jul 7 19:41:40 1999] access to /home/wetzlar/public_html/wzonline/cgi/hallowelt.cgi failed for max3-27.hrz.uni-giessen.de, reason: Premature end of script headers
Mein Problem ist, daß das Script auf einem Server läuft, und auf dem anderen nicht.
Hier funkts nicht: http://www.wetzlar-online.de/wzonline/gbook/cgitestform.htm
Hier funkts: http://www.twoforyou.de/cgitestform.htm
Kann mir jemand erklären, was der Eintrag in die Error.log zu bedeuten hat. Ich habe dasselbe Problem auch noch mit anderen CGI-Scripten, die auf der ersten Adresse nicht laufen, und auf der zweiten doch?!?! Da der Systemadministrator für wetzlar-online leider nur selten vor Ort ist, kann ich auch von dort kaum Hilfe erwarten. Im voraus vielen Dank für die hoffentlich zahlreichen Antworten :-)
Alex
In der Error-log steht folgendes:
[Wed Jul 7 19:41:40 1999] access to /home/wetzlar/public_html/wzonline/cgi/hallowelt.cgi failed for max3-27.hrz.uni-giessen.de, reason: Premature end of script headers
Das besagt leider nur, daß es das Skript nicht mehr geschafft hat, auch nur die Zeile mit dem "Content-type" erfolgreich auszugeben - das wäre der "script header" gewesen.
Riecht also nach Syntaxfehler (das Skript sieht aber "gesund" aus), nicht gefundenem Perl-Interpreter etc., am ehesten aber nach binär übertragener Perl-Datei (dann wären ggf. falsche Zeilenumbrüche drin, da ist Perl *sehr* pingelig).
Kannst Du Dich auf dem Server einloggen? Wenn ja, dann führe mal "perl -c <scriptname>" dort aus, das müßte weiterhelfen.
An der Semantik des Skripts liegt es jedenfalls nicht, wenn es auf anderen Servern läuft - also entweder am konkreten Dateiinhalt oder an irgendwelchen Server-Einstellungen.
/home/wetzlar/public_html/wzonline/cgi/hallowelt.cgi
am ehesten aber nach binär übertragener Perl-Datei (dann wären ggf. falsche Zeilenumbrüche drin, da ist Perl *sehr* pingelig).
Ist cgi nicht das binäre Gegenstück zu pl?
Dann wäre es womöglich umgekehrt, ascii Übertragung statt binär...
Ist cgi nicht das binäre Gegenstück zu pl?
Dann wäre es womöglich umgekehrt, ascii Übertragung statt binär...
".cgi" ist lediglich die vordefinierte Endung für CGI-Skripts in bestimmten Webservern (beispielsweise Apache) - wer dort die Definition des CGI-Verzeichnisses nicht beeinflussen darf, der muß seine Programme (egal ob Perl oder was auch immer) eben entsprechend umbenennen.
Daraus kann man nicht schließen, in welcher Sprache oder Form die Anwendung vorliegt - genau deshalb gibt es in UNIX ja den Mechanismus, "#!<interpreter>" aus Zeile 1 der Datei zu lesen, weil der Dateiname dort - anders als in Windows - eben nichts über den "Dateityp" aussagt.