Premature End of Script...
Tom
- perl
Hallo,
nachdem die das Archiv durchsucht habe und trotzdem keine der angebotenen Lösungen mein Problem beseitigt, muß ich nun doch posten.
Ich bekomme beim Ausführen eines Perl-Scripts aus dem Browser (Apache 1.3.12, SuSE 6.4) den bekannten "Premature End of Script Error".
Unter Windows funktionieren die Scripts ebenfalls.
Den Pfad habe ich auf #!/usr/bin/perl angepasst.
Wo könnte der Fehler noch liegen???
Bin für jeden noch so kleinen Hinweis dankbar.
Tom
Wo könnte der Fehler noch liegen???
Bin für jeden noch so kleinen Hinweis dankbar.
Vielleicht mangelnde Berechtigungen. Was steht denn im Error-Log?
Peter
Wo könnte der Fehler noch liegen???
Bin für jeden noch so kleinen Hinweis dankbar.Vielleicht mangelnde Berechtigungen. Was steht denn im Error-Log?
Peter
Im error_log steht:
No such File or directory: exec of /usr/local/httpd/cgi-bin/test.pl failed
Premature end of script headers: /usr/local/httpd/cgi-bin/test.pl
Ein anderes Script im gleichen Verzeichnis mit den gleichen Rechten funktioniert auch.
Achso, im Script die Zeile print "Content-type: text/html\n": habe ich auch.
Tom
Wo könnte der Fehler noch liegen???
Bin für jeden noch so kleinen Hinweis dankbar.Vielleicht mangelnde Berechtigungen. Was steht denn im Error-Log?
Peter
Im error_log steht:
No such File or directory: exec of /usr/local/httpd/cgi-bin/test.pl failed
Premature end of script headers: /usr/local/httpd/cgi-bin/test.plEin anderes Script im gleichen Verzeichnis mit den gleichen Rechten funktioniert auch.
Achso, im Script die Zeile print "Content-type: text/html\n": habe ich auch. ----------
Vielleicht nur ein Kopie fehler aber hast du \n\n oder wie oben \n\ stehn ?
Fisch
Wo könnte der Fehler noch liegen???
Bin für jeden noch so kleinen Hinweis dankbar.Vielleicht mangelnde Berechtigungen. Was steht denn im Error-Log?
Vielleicht nur ein Kopie fehler aber hast du \n\n oder wie oben \n\ stehn ?
Fisch
Ja, Cut+Paste-Fehler. Ist im Original Script ok.
Tom
Hi,
No such File or directory: exec of /usr/local/httpd/cgi-bin/test.pl failed
klingt, als wäre
Den Pfad habe ich auf #!/usr/bin/perl angepasst.
falsch gewesen.
Cheatah
Hi,
No such File or directory: exec of /usr/local/httpd/cgi-bin/test.pl failed
klingt, als wäre
Den Pfad habe ich auf #!/usr/bin/perl angepasst.
falsch gewesen.Cheatah
Aber das ist doch der richtige Pfad. Und ein zweites Script im gleichen Verzeichnis funktioniert mit der gleichen ersten Zeile ebenfalls.
<a href="/cgi-bin/test.pl">Test 1</a> -> klappt nicht
<a href="/cgi-bin/test2.pl">Test 2</a> -> klappt
Die beiden ersten Zeilen der Scripts sind identisch
#!/usr/bin/perl
print "Content-type: text/html\n\n"
Tom (der langsam verzwefelt)
Hi,
Die beiden ersten Zeilen der Scripts sind identisch
#!/usr/bin/perl
print "Content-type: text/html\n\n"
Ich meine mich erinnern zu können hier einmal gelesen zu haben, daß man nach der Shebang-Zeile (#!)
eine Leerzeile stehen lassen sollte. Kannst du ja mal probieren. (würde allerdings nicht erklären, wieso das eine
geht und das andere nicht.)
Gruß,
Tobias
Hi,
Die beiden ersten Zeilen der Scripts sind identisch
#!/usr/bin/perl
print "Content-type: text/html\n\n"Ich meine mich erinnern zu können hier einmal gelesen zu haben, daß man nach der Shebang-Zeile (#!)
eine Leerzeile stehen lassen sollte. Kannst du ja mal probieren. (würde allerdings nicht erklären, wieso das eine
geht und das andere nicht.)Gruß,
Tobias
Danke für den Tip, hat aber leider auch nix gebracht.... :(
Tom
Hi,
Den Pfad habe ich auf #!/usr/bin/perl angepasst.
falsch gewesen.Aber das ist doch der richtige Pfad.
blöde Idee, die aber nicht zum ersten Mal klappen würde: Lösch die Zeile und schreib sie von Hand noch mal neu!
Und ein zweites Script im gleichen Verzeichnis funktioniert mit der gleichen ersten Zeile ebenfalls.
Inwieweit unterscheiden sich die beiden Scripts anschließend? Was wird in dem einen eingebunden, was im anderen fehlt? Und was sagt das Script, wenn Du es auf dem Zielsystem mit
./script.pl
ausführst?
Cheatah
blöde Idee, die aber nicht zum ersten Mal klappen würde: Lösch die Zeile und schreib sie von Hand noch mal neu!
bringt leider auch nix
Inwieweit unterscheiden sich die beiden Scripts anschließend? Was wird in dem einen eingebunden, was im anderen fehlt? Und was sagt das Script, wenn Du es auf dem Zielsystem mit
1. Script das micht funktioniert:
Das eine Script liest eine komplette Html-Datei ein, verändert einige Inhalte der gelesenen Datei und gibt die veränderte Datei im Browser aus.
2. Script das funktioniert:
Hallo Welt-Script :)
Und was sagt das Script wenn Du es auf dem Zielsystem mit ./script.pl ausführst?
Das ist eine gute Frage. Da bekomme ich nämliche die Fehlermeldung das die Datei nicht gefunden wurde.
Kann das dann an den zu öffnenden Dateien im Script liegen?? Aber warum dann der "premature end of script headers"??
<versteht gar nix mehr>
Tom
Wo steht die HTML-Datei? Ist die readable fuer das Skript?????
Setz mal alles auf chmod 777 - nur zum testen.
Schreibe Logmeldungen in eine error-Datei, nur um zu sehen, wie weit Dein Skript ueberhaupt kommt.
Gruss Christoph
Hi,
Das eine Script liest eine komplette Html-Datei ein,
open(...) or die "Kann Datei xyz nicht oeffnen: $!";
Anschließend steht im Errorlog mehr.
Kann das dann an den zu öffnenden Dateien im Script liegen??
Ja, vermutlich.
Aber warum dann der "premature end of script headers"??
Es wird erst die Fehlerausgabe an den Server geschickt, dann die eigentliche Scriptausgabe. Also kommt ein falscher HTTP-Header zuerst - premature end of script headers.
Cheatah
Hallo,
Einfach ein Verdacht:
Mach am Ende der Datei eine zusätzliche Leerzeile.
Und schau nach ob sich nicht irgendwo doch noch ein sonderzeichen eingeschlichen hat, welches den Fehler verursacht.
'vi' ist da nicht immer die waffe, weil der sagt Dir oft zwar, daß es sich um eine DOS-Datei handelt, zeigt aber keine '^M' an.
probiers mit 'cat'.
Sch... ASCII-Konvertierungen.
Grüße
Klaus
Hallo Tom,
poste doch einfach mal das Skript, das wuerde die Loesungsfindung erheblich erleichtern.
Gruss
Kai