Problem: CGI mag mein Server nicht....

So,

sehr gute Nachrichten:

In meinem Browser klappt der Aufruf der beiden Scripte nun auch ohne Probleme.

jeweils mit

Code:
http://localhost/cgi-bin/test1

und

http://localhost/cgi-bin/hallowelt


Zuvor habe ich nochmal den test gemacht und das hallowelt Script nochmals so ausgeführt wie zuvor, mit der Fehlermeldung im error_log:

Code:
[Sat Aug 11 13:49:05 2007] [error] [client 127.0.0.1] malformed header from script. Bad header=Hallo Welt: /Library/WebServer/CGI-Executables/hallowelt

Nachdem ich auch dort den Header
Code:
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Test</title></head>\n";
print "<body>Hallo Welt</body></html>\n";

kopiert und in der letzten Zeile "Hallo Welt" ersetzt habe, kommt beim erneuten Aufruf im Browser nun endlich die richtie Ausgabe, nämlich nur:

Code:
Hallo Welt


Also rundum zufrieden, scheinbar klappt es nun endlich! :D

MacMännchen, ich Danke Dir sehr für Deine Geduld und Hilfestellung! Wenigstens einer der wenigen, die sich mit einem Problem auseinandersetzen und versuchen zu helfen. :)

Anbei noch ein paar Bemerkungen von mir:

1. Was es mit dem Speichern der Scripte auf sich hat, kann ich immer noch nicht genau nachvollziehen, allerdings beschleicht mich der Verdacht, dass in der httpd.conf irgendwo eine Definiton zu finden sein muss, die besagt, dass jegliches Script im cgi-executables Ordner auch als solches ausgeführt werden soll.

Wahrscheinlich wird das die AddHandler Zeile sein.

Demnach würde das m.E. erklären, dass ein Script, welches mit der Endung .cgi gespeichert wird, vom Server also interpretiert wird. Da ja schon die CGI Anweisung in der httpd.conf besteht, würde der Server an die test1.cgi nochmals sein eigenes .cgi anhängen, also:

Code:
test1.cgi.cgi

und somit könnte er das ganze nicht mehr verarbeiten, da die Datei nun dopplet bezeichnet ist und er sich am zweiten .cgi stört.

Das jedenfalls wäre meine Erklärung dafür.

Allerdings hätte ich nun erwartet, dass der Server "intelligent" genug ist, eine als irgendwas.cgi gespeicherte Datei vorab zu erkennen und in dem Fall sein eigenes .cgi nicht mehr anzuhängen.

Soviel zu meiner Theorie.


Punkt 2.

Zu dem Alias aus der httpd.conf:

Ich hatte ja gefragt, warum ich den Aufruf im Browser nun mit cgi-bin statt mit cgi-executables ausführe. Wenn man, so wie ich, keine Tomaten auf den Augen hat :D , dann erkennt man, dass es ja, wie der Name schon sagt, um ein "ALIAS" geht.

Also wird der Pfad zu /Library/Webserver/CGI-Executables/ verkürzt und dem Alias "cgi-bin" zugeordnet. Damit ist dann der kürzere Aufruf im Browser als

Code:
http://localhost/cgi-bin/irgendeinscript

verdeutlicht.

Wenn man Tagelang vor solchen Problemen sitzt und grübelt, dann übersieht man scheinbar schnell das wesentliche und einleuchtendste.


Anbei nochmal der Dank für den Tip, in der httpd.conf NICHTS zu ändern!! Nach den ganzen Änderungen, die ich blind übernommen habe, war die ganze Datei verkorkst. Wie man sieht, reicht gründliches überlegen und analysieren. :cool:


Hach bin ich jetzt glücklich....

Ich glaube, es wäre hier mal ein kleines FAQ zum Thema "CGI und Perl unter MAc OS X" fällig. :D

Man sieht ja, wie man an sowas verzweifeln kann und sich das Leben unnötig schwer macht....


Und ich bin sicher, es werden noch einnige andere Probleme auftauchen, dann gibts den nächsten Thread dazu....

So far...


Grüsse


s0yl3nt-bl4ck
 
:D schön, dass es jetzt läuft :thumbsup:
 
:freu:

Jep, Danke nochmals!!
 
Zurück
Oben Unten