cgi-script für Linux funktioniert nicht unter Windows

Alles, was den Apache betrifft, kann hier besprochen werden.

cgi-script für Linux funktioniert nicht unter Windows

Postby juergen&lx » 06. October 2004 23:09

Hallo zusammen,

bisher bin ich davon ausgegangen, dass ein CGI-Script für Linux (Xampp V1.4.8) auch unter Windows (Xampp V1.4.7) läuft. Aber dem ist nicht so.
Irgendwo ist/sind ein bis viele Fehler, die ich nicht nachvollziehen kann.

Ich habe die Kopfzeile geändert in
Code: Select all
#!E:\xampp\perl\bin\perl.exe
#!/bin/sh #die Zeile wurde gelöscht
Code: Select all
# disable filename globbing
set -f

echo Content-type: text/plain
echo

echo CGI/1.0 test script report:
echo

echo argc is $#. argv is "$*".
echo

echo SERVER_SOFTWARE = $SERVER_SOFTWARE
echo SERVER_NAME = $SERVER_NAME
echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE
echo SERVER_PROTOCOL = $SERVER_PROTOCOL
echo SERVER_PORT = $SERVER_PORT
echo REQUEST_METHOD = $REQUEST_METHOD
echo HTTP_ACCEPT = "$HTTP_ACCEPT"
echo PATH_INFO = "$PATH_INFO"
echo PATH_TRANSLATED = "$PATH_TRANSLATED"
echo SCRIPT_NAME = "$SCRIPT_NAME"
echo QUERY_STRING = "$QUERY_STRING"
echo REMOTE_HOST = $REMOTE_HOST
echo REMOTE_ADDR = $REMOTE_ADDR
echo REMOTE_USER = $REMOTE_USER
echo AUTH_TYPE = $AUTH_TYPE
echo CONTENT_TYPE = $CONTENT_TYPE
echo CONTENT_LENGTH = $CONTENT_LENGTH
und hier die Fehlermeldungen:
[Wed Oct 06 19:47:56 2004] [error] [client 127.0.0.1] Premature end of script headers: test-cgi.cgi, referer: http://localhost/xampp/navi.php
[Wed Oct 06 19:47:56 2004] [error] [client 127.0.0.1] String found where operator expected at E:/xampp/cgi-bin/test-cgi.cgi line 6, near "echo "Content-type: text/plain""\r, referer: http://localhost/xampp/navi.php
[Wed Oct 06 19:47:56 2004] [error] [client 127.0.0.1] \t(Do you need to predeclare echo?)\r, referer: http://localhost/xampp/navi.php
[Wed Oct 06 19:47:57 2004] [error] [client 127.0.0.1] syntax error at E:/xampp/cgi-bin/test-cgi.cgi line 6, near "echo "Content-type: text/plain""\r, referer: http://localhost/xampp/navi.php
[Wed Oct 06 19:47:57 2004] [error] [client 127.0.0.1] Execution of E:/xampp/cgi-bin/test-cgi.cgi aborted due to compilation errors.\r, referer: http://localhost/xampp/navi.php
Kann das Jemand nachvollziehen?

Mfg

Jürgen
juergen&lx
 
Posts: 154
Joined: 18. February 2004 21:36
Location: in einem Dorf am Rande des Strombergs
Operating System: Linux

KEIN Perl-Skript!

Postby neo42 » 10. October 2004 19:18

Die gelöschte Zeile
#!/bin/sh
sagt bereits das Wichtigste: das *ist* kein Perl-Skript, sondern ein UNIX-Shell-Skript. Da Windows diese Sprache von Hause aus nicht versteht, müsste das Skript in etwas anderes umgeschrieben werden. Für die Umwandlung in Perl nur folgende Hinweise:
1. Aus
echo TEXT
wird
print "TEXT";

2. Umgebungsvariablen wie $SERVER_SOFTWARE müssen in Perl als $ENV{'SERVER_SOFTWARE'} angesprochen werden. Beispielzeile:
print "SERVER_SOFTWARE = ".$ENV{'SERVER_SOFTWARE'}."\n";

3. argv (Werte der Kommandozeilenparameter) und argc (Anzahl der Kommandozeilenparameter) sind bei CGI-Skripten in aller Regel überflüssig; die Zeile kann weg.
Apache-Direktiven als täglicher Newsletter:
http://buecher.lingoworld.de/apache2/dirnews.html
neo42
 
Posts: 16
Joined: 06. February 2004 21:42
Location: Köln

Postby juergen&lx » 11. October 2004 00:41

hallo neo,

Ja da haben wir wieder etwas gelernt,
über die " #!/bin/sh " bin ich aber nicht gestolpert

Vielen Dank :)
Jürgen
juergen&lx
 
Posts: 154
Joined: 18. February 2004 21:36
Location: in einem Dorf am Rande des Strombergs
Operating System: Linux

Postby splion » 12. October 2004 16:25

Hallo,

das Problem ist der interne Befehl echo !
echo ohne Parameter gibt aus, ob echo on oder off ist. Das ist nicht ganz das, was der Server erwartet.
Eine Leerzeile, die Du nach dem Content-type benötigst, erreichst Du mit
einem "echo."
Wichtig ist der Punkt direkt hinter echo !

ciao Andreas
splion
 
Posts: 44
Joined: 19. August 2004 15:32


Return to Apache

Who is online

Users browsing this forum: No registered users and 10 guests