Perl Script schreibt 0 Byte Dateien

Bash, Shell, PHP, Python, Perl, CGI
elfchen
Posts: 28
Joined: 2004-09-04 17:47

Perl Script schreibt 0 Byte Dateien

Post by elfchen » 2004-09-04 17:53

Hallo!

Ich habe ein sehr komplexes Script: :lol:

#!/usr/bin/perl
$file = 'test.txt';
open(INFO ,">>$file") || die "Fehler $!";
print INFO "Hallon";
close INFO;

So - das Verzeichnis in das geschrieben werden soll, steht auf 777.

Wenn ich nun dieses Script in der Shell aufrufe steht schön in der test.txt Hallo.

Rufe ich das Script auf dem Server auf, dann bekomme ich lustigerweise:

Error message:
Premature end of script headers: test.cgi

obwohl es auf 755 steht und Nutzer und Gruppe korrekt sind.

Im error log vom Apachen findet sich dann auch

Premature end of script headers: test.cgi

Im Suexec.log ist nur der Aufruf verzeichnet, aber keine Fehlermeldung.

Die Datei test.txt wird auch angelegt, allerdings mit 0 Byte - also ohne Inhalt und ohne mein Hallo :-)

... und nun bin ich mit meinem Latein am Ende :?:

Vielleicht findet sich hier jemand, der mir helfen kann. Wäre echt lieb.

Elfchen

Anonymous

Re: Perl Script schreibt 0 Byte Dateien

Post by Anonymous » 2004-09-04 20:06

Logik: das script bricht ab bevor es die Datei schreiben kann was imho an einem Berechtigungsproblem beim erstellen/schreiben des files liegt

elfchen
Posts: 28
Joined: 2004-09-04 17:47

Re: Perl Script schreibt 0 Byte Dateien

Post by elfchen » 2004-09-04 20:13

smashie wrote:Logik: das script bricht ab bevor es die Datei schreiben kann was imho an einem Berechtigungsproblem beim erstellen/schreiben des files liegt
***ggg***

Ja soweit ist mir das klar.

Wie ich das jetzt beheben kann weiss ich aber noch immer nicht, da das zu beschreibende Verzeichnis schon auf 777 steht.

Elfchen

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Perl Script schreibt 0 Byte Dateien

Post by Joe User » 2004-09-04 20:14

smashie wrote:Logik: das script bricht ab bevor es die Datei schreiben kann was imho an einem Berechtigungsproblem beim erstellen/schreiben des files liegt
Nö, das Script ist kein CGI und wird daher auch nicht als Solches interpretiert ;)
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

Anonymous

Re: Perl Script schreibt 0 Byte Dateien

Post by Anonymous » 2004-09-04 20:23

Joe User wrote:
smashie wrote:Logik: das script bricht ab bevor es die Datei schreiben kann was imho an einem Berechtigungsproblem beim erstellen/schreiben des files liegt
Nö, das Script ist kein CGI und wird daher auch nicht als Solches interpretiert ;)
jedes ausführbare script ist CGI .. sofern sein apache perl versteht wovon ich ausgehe ist es nach wie vor ein Rechteproblem

elfchen
Posts: 28
Joined: 2004-09-04 17:47

Re: Perl Script schreibt 0 Byte Dateien

Post by elfchen » 2004-09-04 20:29

Nö, das Script ist kein CGI und wird daher auch nicht als Solches interpretiert ;)
Hi - danke ... aber das ist es nicht, denn mein Hello World Script läuft einwandfrei und wenn es nicht als CGI interpretiert werden würde, dann würde es ja auch keine 0 Byte Datei anlegen und dann nur nicht reinschreiben.

Es liegt auch nicht an den übergebenen Variablen, da ich es ja gemäss dem obenstehenden Script mit einem Text ohne Variable probiert habe. Zudem lassen sich die Variablen in Mails problemlos versenden.
jedes ausführbare script ist CGI .. sofern sein apache perl versteht wovon ich ausgehe ist es nach wie vor ein Rechteproblem
Yep, dem ist so ... aber wie ich es nun beheben kann wäre wirklich interessant ... HILFE!

PS:
nicht sein Server ... ihr :-D

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Perl Script schreibt 0 Byte Dateien

Post by Joe User » 2004-09-04 20:55

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

elfchen
Posts: 28
Joined: 2004-09-04 17:47

Re: Perl Script schreibt 0 Byte Dateien

Post by elfchen » 2004-09-04 21:18

Vielen Dank, aber das habe ich schon alles durch.

Bei meinem Miniscript bekomme ich auch einen Syntax OK sowie in keinem Logfile einen Fehlereintrag. Die Premature end of script headers weisen ja auf einen Rechtefehler hin, nur dann sollte der ja auch irgendwo geloggt sein. Nachdem aber in keinem Logfile ein Fehler ausgegeben wird frage ich mich doch wo das jetzt herkommt, das die Files alle auf 0 Byte stehen. Würde ein Rechteproblem bestehen könnte er die Datei ja gar nicht anlegen, da er dafür ja schon schreiben muss.

Ich dachte mitunter hat Strato auf seinen Rootservern da einen Trick eingebaut oder eine altbekannte Sache, aber mir scheint dem ist wohl nicht so. Da muss ich jetzt wohl weiterbuddeln - aber wie gesagt - wo keine Fehlermeldung ist das etwas sehr schwer .......

Elfchen

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Perl Script schreibt 0 Byte Dateien

Post by Joe User » 2004-09-04 21:27

Da Du das Script als CGI ausführen willst, musst Du auch die entsprechenden HTTP-Header senden, was Du nicht machst. Daher ist das Script nunmal kein CGI und wird auch nicht als ein Solches behandelt.

BTW: Wir drehen uns im Kreis...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

wgot
Posts: 1675
Joined: 2003-07-06 02:03

Re: Perl Script schreibt 0 Byte Dateien

Post by wgot » 2004-09-04 22:22

Hallo,
Elfchen wrote:Premature end of script headers: test.cgi
das Script ist zu Ende bevor ein Header ausgegeben wurde.

Also dann mal raus mit dem Header (als 2. Zeile):

Code: Select all

print "Content-type: text/htmlnn";
Gruß, Wolfgang