speedy: Warum kann ich keine Parameter an mein Skript übergeben?

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

            ..
            /