in reply to SSI losing CGI parameters

Previous stab at this revoked after an experiment with Apache.

I didn't know that an SSI #include would actually invoke scripts, but it does with Apache. Cool.

It appears that Apache isn't passing along the environment variables that CGI.pm needs. But there is something in the environment that you can use. I'll lead you to within sight of it, and from then on you're on your own.

Have your test.shtml invoked the following script:

#!/usr/bin/perl -w print "Content-type: text/html\n\n"; print "<pre>"; foreach $key ( sort keys %ENV ) { print $key, ": ", $ENV{$key}\n"; } print "</pre>\n";
I think you'll find something sitting around in the environment that you can use. Witha little trickery, you might even be able to get CGI.pm working, though you'll have to stuff some missing stuff into the environment.

Followup: my well-worn copy of O'Reilly's Webmaster in a Nutshell is out-of-date with respect to #exec vs. #include. Isotope's link below is authoritative (at least if you're running a current version of Apache).

Replies are listed 'Best First'.
Re: Re: SSI losing CGI parameters
by isotope (Deacon) on Jan 25, 2001 at 23:37 UTC
    include virtual is the currently accepted way of including CGI content with SSI. Looking at my own test case, though, I see that Apache isn't populating the QUERY_STRING as expected... the query string is only available in QUERY_STRING_UNESCAPED as the author mentioned.

    Update: Reading through the Apache documentation, it looks like include virtual calls the CGI with whatever parameters you include in the SSI tag (which could include SSI variables, such as ${QUERY_STRING}. exec cgi seems to call the CGI with the environment of the requested parsed page.

    --isotope
    http://www.skylab.org/~isotope/