Premature end of script headers


Tim Bureck

Erfahrenes Mitglied
Hallo zusammen,

folgendes Problem: Der Kunde bekommt beim Aufruf eines Perl-Scripts auf dem Produktionsserver die Fehlermeldung 500 Internal Server Error. Im Error Log des Apaches steht:

Code:
[Thu Jul  2 15:54:06 2009] [error] [client 10.17.6.19] Premature end of script headers: (Pfad zur Datei)
Das Problem ist: Auf unserem Entwicklungsserver funktioniert das Ding einwandfrei. Was wir bereits alles ausprobiert haben:

1. Kodierung der Datei: Ist überall UTF-8 und ohne Windows-Steuerzeichen
2. Hinzufügen von Zeilenumbrüchen hinter der Headerausgabe:

Perl:
my $cgi = CGI->new();
print $cgi->header( -type => 'text/html', -charset => 'ISO-8859-1'.'\n\n' );
3. Die Rechte der Datei waren bereits auf 7777 gesetzt, fragt mich bitte nicht warum. :D
4. Die Scripte auf den jeweiligen Servern sind bis aufs letzte Bit identisch (Checksum).

Der einzige Unterschied zwischen den Servern ist die Perl Version.. Während auf dem Entwicklungsserver 5.10.0 installiert ist läuft auf dem Produktionsserver noch die 5.8.3. Ein Update möchte ich aber möglichst vermeiden, da dazu das Programm abgeschaltet werden müsste.

Weiß jemand noch Rat? Übrigens habe ich keine Ahnung von Perl, nur so zur Info ;)
 
Hallo Tim,

arbeitet das Skript auf beiden Servern korrekt, wenn man es von der Konsole aus aufruft? Ist der Pfad zu Perl in der Shebang-Zeile (erste Zeile im Skript, beginnt mit #!) korrekt? Die Anpassung aus Punkt 2 solltest du wieder rückgängig machen.

Grüße, Matthias
 

Tim Bureck

Erfahrenes Mitglied
Die Shebang-Zeile ist korrekt, beim Aufruf des Scriptes in der Konsole kam folgender Fehler:

Code:
Setuid/gid script is writable by world.
Daraufhin habe ich die Rechte nochmal mit denen auf dem Entwicklungsserver verglichen. Unterschied: 7777 (Produktion) <-> 0777 (Entwicklung). Nach dem Umstellen der Rechte gab die Datei den Header aus, was auf eine korrekte Ausführung hinweist... wir lassen das jetzt erst noch ein mal testen.