Warum kann ich keine Parameter an mein Skript übergeben?
speedy
- ssi
Hi Folks,
ich habe ein CGI-Skript (PERL) welches per SSI aufgerufen werden soll. Das funzt auch recht proper, wenn man lediglich das Skript aufruft. Wenn ich allerdings Parameter an das Skript übergeben will (also z.B. <!--#exec cgi="cgi-bin/cms/speedcms.pl?edit=testseite.cms" -->) dann erscheint im Browser nur die Meldung "an error occured" (da, wo der Inhalt der Skriptausgabe stehen sollte) und im log steht "[Fri Jul 07 18:37:55 2000] [error] [client 127.0.0.2] invalid CGI ref "cgi-bin/cms/speedcms.pl?edit" in c:/wwwroot2/testssi.shtml".
Weis jemand Rat?
Vielen Dank,
speedy
Hallo speedy,
[...] Wenn ich allerdings Parameter an das Skript übergeben will (also z.B. <!--#exec cgi="cgi-bin/cms/speedcms.pl?edit=testseite.cms" -->) dann erscheint im Browser nur die Meldung "an error occured" (da, wo der Inhalt der Skriptausgabe stehen sollte) und im log steht "[Fri Jul 07 18:37:55 2000] [error] [client 127.0.0.2] invalid CGI ref "cgi-bin/cms/speedcms.pl?edit" in c:/wwwroot2/testssi.shtml".
Versuchs mal mit <!--#include virtual="/cgi-bin/cms/speedcms.pl?edit=testseite.cms" --> Das könnte besser funktionieren. Scheinbar ist bei einigen Serverprogrammen, entgegen jeglicher Logik, bei CGI-Aufrufen die Parameterübergabe in der URL nicht möglich. Dafür allerdings bei #include !? Ob, und wenn ja, wo man das vielleicht einstellen kann, hab` ich noch nicht herausgefunden ;-) Vielleicht weis einer der Serverexperten Rat.
Gruß AlexBausW
Hi,
[...] Wenn ich allerdings Parameter an das Skript übergeben will (also z.B. <!--#exec cgi="cgi-bin/cms/speedcms.pl?edit=testseite.cms" -->) dann erscheint im Browser nur die Meldung "an error occured" (da, wo der Inhalt der Skriptausgabe stehen sollte) und im log steht "[Fri Jul 07 18:37:55 2000] [error] [client 127.0.0.2] invalid CGI ref "cgi-bin/cms/speedcms.pl?edit" in c:/wwwroot2/testssi.shtml".
Versuchs mal mit <!--#include virtual="/cgi-bin/cms/speedcms.pl?edit=testseite.cms" --> Das könnte besser funktionieren.
include virtual ist der korrekte Weg bei der Parameterübergabe, zumindest bei Apache.
Scheinbar ist bei einigen Serverprogrammen, entgegen jeglicher Logik, bei CGI-Aufrufen die Parameterübergabe in der URL nicht möglich.
SSI != CGI; das ist kein CGI-Aufruf, sondern der Aufruf eines CGI-Scripts (ja, das ist ein Unterschied). Und RTFhttp://www.apache.org/docs/mod/mod_include.html:
"The CGI script is given the PATH_INFO and query string (QUERY_STRING) of the original request from the client; these cannot be specified in the URL path."
Dafür allerdings bei #include !?
"The URL cannot contain a scheme or hostname, only a path and an optional query string."
Cheatah
Hi Cheatah,
SSI != CGI; das ist kein CGI-Aufruf, sondern der Aufruf eines CGI-Scripts (ja, das ist ein Unterschied). Und RTFhttp://www.apache.org/docs/mod/mod_include.html:
Ich war bis jetzt der Meinung, daß '#exec cgi' eben einen Skriptaufruf über die CGI-Schnittstelle tätigt, wofür ja auch spricht, daß PATH_INFO und QUERY_STRING gestetzt werden (siehe unten), oder etwa doch nicht? ;-)
"The CGI script is given the PATH_INFO and query string (QUERY_STRING) of the original request from the client; these cannot be specified in the URL path."
Also kann ich dem Dokument einen Querystring übergeben, welcher dann vom per '#exec cgi' aufgerufen Skript ausgelesen werden kann. Gut das man das mal weis. Ich hab` den Apache erst seit 2 Wochen drauf, und bis dahin und auch seitdem noch wenig Kontakt damit. Wird zeit, mal das Manual zu lesen ;-)
Wenn ich jetzt von Selfhtml ausgehe (<../../tgbe.htm#a2>), könnte ich dann nicht auch das Skript über '#exec cmd' aufrufen und einfach die Parameter dahinter hängen (CGI.pm liest ja Argumente auch von der Kommandozeile)?
<!--#exec cmd="/pfad/zu/skript.cgi param1=val1" -->
Gruß AlexBausW
Hi,
Ich war bis jetzt der Meinung, daß '#exec cgi' eben einen Skriptaufruf über die CGI-Schnittstelle tätigt,
eben nicht.
wofür ja auch spricht, daß PATH_INFO und QUERY_STRING gestetzt werden (siehe unten), oder etwa doch nicht? ;-)
Ja, aber aus der URI des Dokumentes, das das SSI-Kommando enthält.
Wenn ich jetzt von Selfhtml ausgehe (<../../tgbe.htm#a2>), könnte ich dann nicht auch das Skript über '#exec cmd' aufrufen und einfach die Parameter dahinter hängen (CGI.pm liest ja Argumente auch von der Kommandozeile)?
<!--#exec cmd="/pfad/zu/skript.cgi param1=val1" -->
Hab ich noch nie probiert, kann aber durchaus sein. Nur solltest Du den cmd-String mit "perl" beginnen lassen, denke ich ;-)
Cheatah
Hi Ihr beiden,
da hab ich ja mal wieder was losgetreten :-)
Vielen Dank für eure Diskussion - meine Fragen sind damit erstmal beantwortet!
Viele Grüsse und schönes Wochenende
speedy
..
/