On Tue, 17 Jul 2001 at 15:47 (+0200), Daniel M.Ludwig wrote:
Am Die, 17 Jul 2001 schrieben Sie:
On Tue, 17 Jul 2001 at 15:24 (+0200), Daniel M.Ludwig wrote:
Hallo Leute!
Ich hab' da ein seltsames Problem mit Apache und komme nicht weiter.
Es gibt eine Reihe von CGI Skripten, die tadellos funktionierten. Ich habe sie alle zwischenzeitlich auf einem Windows Server mit IIS gehabt, und einiges daran geändert. Jetzt wollte ich die veränderten Skripte auf den Linux/Apachie Testserver einspielen, um überall denselben Bestand zu haben. Zu meiner Überraschung lassen sich jetzt aber gar keine Skripte mehr ausführen. In der error-log steht:
[error] (2)No such file or directory: exec of /wwwroot/diversity2/cgi-bin/register_db.cgi failed [Tue Jul 17 15:10:51 2001] [error] [client 192.168.1.62] Premature end of script headers: /wwwroot/diversity2/cgi-bin/register_db.cgi
Dabei _gibt es_die Dateien in den Verzeichnisen, und sie lassen sich direkt mit Perl problemlos ausführen. Dazu habe ich unter denselben Namen einen der alten Skripte kopiert, und das ließ sich einwandfrei ausführen. Woran kann es liegen?
Könnte es vielleicht sein, dass Du diese zwischenzeitlich mit einem Windows-Editor bearbeitet hast? Dann sind die Zeilenumbrüche falsch.
Ja, die wurden mit Wordpad bearbeitet.
WordPad? Das ist doch eine Textverarbeitung und kein Editor. Mit sowas kann man doch nicht programmieren *kopfschüttel*
Lösung:
recode cp1252..latin1 test.cgi
Habe ich versucht, geht bei einigen Skripten weiter, bei anderen taucht: recode: testdatei.cgi failed: Ambiguous output in CR-LF..data
Was ist denn jetzt wieder los?
Das geht nur, wenn das Format auch stimmt. Du kannst ja mal ein cat textdatei.cgi | hex versuchen. berwal@hugo:~ > cat test.pl | hex 0000 23 21 2f 75 73 72 2f 62 69 6e 2f 70 65 72 6c 0a #!/usr/b in/perl. 0010 0a 70 72 69 6e 74 20 22 74 65 73 74 22 3b 0a .print " test";. berwal@hugo:~ > Nach #!/usr/bin/perl folgt nur ein 0a (\n), hier sind es zwei, weil danach eine Leerzeile kommt. Nach einem recode latin1..cp1252 test.pl: berwal@hugo:~ > cat test.pl | hex 0000 23 21 2f 75 73 72 2f 62 69 6e 2f 70 65 72 6c 0d #!/usr/b in/perl. 0010 0a 0d 0a 70 72 69 6e 74 20 22 74 65 73 74 22 3b ...print "test"; 0020 0d 0a .. berwal@hugo:~ > Hier folgt nach dem #!/usr/bin/pler ein 0d (\r) und ein 0a (\n). Also muss umgewandelt werden! Unter Windows kann ein Skript sowieso nicht direkt ausgeführt werden, sondern nur über einen Interpreter. Ich vermute mal, dass perl f. Windows auch mit UNIX-Textdateien umgehen kann. Wenn Du also unter Windows einen Texteditor verwendest, der in Unix-Format abspeichern kann (z. B. JEdit) kannst Du Dir die Umwandlerei sparen. Oder per FTP im Textmodus übertragen. Wenn es denn daran liegen sollte ... Gruß, Bernhard -- -------------------------------------------------------------------- ------------> http://www.links2linux.de <----------- --------------------------------------------------------------------