You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Jim Albert <ji...@netrition.com> on 2005/01/11 20:02:00 UTC
Issues with Environment Variables
Under mod_perl1 I had a mod_perled program that opened a pipe to a
standard CGI and recorded its output.
I did this in my mod_perl program by setting the following ENV vars:
$ENV{"QUERY_STRING"}
$ENV{"REQUEST_METHOD"}
$ENV{"CONTENT_LENGTH"}
and then opening a pipe to the CGI.
The problem under mod_perl2 that I now see is that my standard CGI is
not getting the QUERY_STRING information.
I see at
http://perl.apache.org/docs/2.0/user/porting/compat.html#Issues_with_Environment_Variables
the following information:
"Forked processes (including backticks) won't see CGI emulation
environment variables. (META: This will hopefully be resolved in the
future, it's documented in modperl_env.c:modperl_env_magic_set_all.)"
Does anyone have any information as to whether this issue will be
resolved in mod_perl2?
If not or not anytime soon... can someone suggest a way for my mod_perl2
script to open a pipe to a standard CGI that relies on QUERY_STRING for
its input?
I was thinking of having my mod_perl2 script open a pipe to a perl
script that will take some query_string and such as parameters. That
intermediate script could set the appropriate environment variables and
open a pipe to my standard CGI. That might work, but it seems messy.
--
Jim Albert
Re: Issues with Environment Variables
Posted by Jim Albert <ji...@netrition.com>.
Frank Wiles wrote:
> On Tue, 11 Jan 2005 14:02:00 -0500
> Jim Albert <ji...@netrition.com> wrote:
>
>
>>Under mod_perl1 I had a mod_perled program that opened a pipe to a
>>standard CGI and recorded its output.
>>
>>I did this in my mod_perl program by setting the following ENV vars:
>>$ENV{"QUERY_STRING"}
>>$ENV{"REQUEST_METHOD"}
>>$ENV{"CONTENT_LENGTH"}
>>
>>and then opening a pipe to the CGI.
>>
>>The problem under mod_perl2 that I now see is that my standard CGI is
>>not getting the QUERY_STRING information.
>>
>>I see at
>>http://perl.apache.org/docs/2.0/user/porting/compat.html#Issues_with_Environment_Variables
>>the following information:
>>"Forked processes (including backticks) won't see CGI emulation
>>environment variables. (META: This will hopefully be resolved in the
>>future, it's documented in modperl_env.c:modperl_env_magic_set_all.)"
>>
>>Does anyone have any information as to whether this issue will be
>>resolved in mod_perl2?
>>
>>If not or not anytime soon... can someone suggest a way for my
>>mod_perl2 script to open a pipe to a standard CGI that relies on
>>QUERY_STRING for its input?
>>
>>I was thinking of having my mod_perl2 script open a pipe to a perl
>>script that will take some query_string and such as parameters. That
>>intermediate script could set the appropriate environment variables
>>and open a pipe to my standard CGI. That might work, but it seems
>>messy.
>
>
> This may not work, but I've seen people pass environment variables
> on the commandline before... like so:
>
> # TEST=foobar ./test.pl
>
> This sets $ENV{TEST} == 'foobar'. Not an elegant way to work around
> it, but it should then be passed to the CGI.
>
More or less, that's what I did. I have my mod_perl script open a pipe
and pass the query string and other information to a regular perl script
(call it 'middleman') as command line parameters. middleman then sets
the ENV and opens a pipe to the CGI.
It works, but I don't really like the solution. Luckily, this is not
something that runs a whole lot, so the additional time and resources
are not a big deal.
--
Jim Albert
Re: Issues with Environment Variables
Posted by Frank Wiles <fr...@wiles.org>.
On Tue, 11 Jan 2005 14:02:00 -0500
Jim Albert <ji...@netrition.com> wrote:
> Under mod_perl1 I had a mod_perled program that opened a pipe to a
> standard CGI and recorded its output.
>
> I did this in my mod_perl program by setting the following ENV vars:
> $ENV{"QUERY_STRING"}
> $ENV{"REQUEST_METHOD"}
> $ENV{"CONTENT_LENGTH"}
>
> and then opening a pipe to the CGI.
>
> The problem under mod_perl2 that I now see is that my standard CGI is
> not getting the QUERY_STRING information.
>
> I see at
> http://perl.apache.org/docs/2.0/user/porting/compat.html#Issues_with_Environment_Variables
> the following information:
> "Forked processes (including backticks) won't see CGI emulation
> environment variables. (META: This will hopefully be resolved in the
> future, it's documented in modperl_env.c:modperl_env_magic_set_all.)"
>
> Does anyone have any information as to whether this issue will be
> resolved in mod_perl2?
>
> If not or not anytime soon... can someone suggest a way for my
> mod_perl2 script to open a pipe to a standard CGI that relies on
> QUERY_STRING for its input?
>
> I was thinking of having my mod_perl2 script open a pipe to a perl
> script that will take some query_string and such as parameters. That
> intermediate script could set the appropriate environment variables
> and open a pipe to my standard CGI. That might work, but it seems
> messy.
This may not work, but I've seen people pass environment variables
on the commandline before... like so:
# TEST=foobar ./test.pl
This sets $ENV{TEST} == 'foobar'. Not an elegant way to work around
it, but it should then be passed to the CGI.
---------------------------------
Frank Wiles <fr...@wiles.org>
http://www.wiles.org
---------------------------------