Alex B: Error : Premature end of script headers

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

  1. 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&gt" 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.

    1. /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...

      1. 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.