You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Bill Moseley <mo...@hank.org> on 2004/06/04 20:49:46 UTC
PerlSetupEnv and CGI.pm
With PerlSetupEnv OFF $cgi->param('foo') returns undef. I'm sure this
is suppose to work, so I'm wondering what I'm doing wrong.
CGI.pm 3.04, mod_perl 1.29
Here's a test config with a small handler:
ErrorLog error_log
PidFile httpd.pid
Listen *:5000
#PerSetupEnv Off
<perl>
package test;
use CGI;
use Data::Dumper;
sub handler {
my $cgi = CGI->new;
print $cgi->header('text/plain');
print 'Param "foo" is [', $cgi->param('foo') || 'undefined', "]\n";
print Dumper \%ENV;
return Apache::Constants::OK();
}
</perl>
NameVirtualHost *:5000
<VirtualHost *:5000>
DocumentRoot /home/moseley/apache
ServerName localhost
<Location />
SetHandler perl-script
PerlHandler test
</Location>
</VirtualHost>
Now, this works:
$ /usr/sbin/apache-perl -d $(pwd) -f $(pwd)/testcgi.conf -X &
$ GET http://localhost:5000/?foo=bar
Param "foo" is [bar]
$VAR1 = {
'SCRIPT_NAME' => '',
'SERVER_NAME' => 'localhost',
'SERVER_ADMIN' => '[no address given]',
'PATH_INFO' => '/',
'HTTP_CONNECTION' => 'TE, close',
'REQUEST_METHOD' => 'GET',
'SCRIPT_FILENAME' => '/home/moseley/apache',
'SERVER_SOFTWARE' => 'Apache/1.3.31 (Debian GNU/Linux) PHP/4.3.4 mod_perl/1.29',
'HTTP_TE' => 'deflate,gzip;q=0.3',
'QUERY_STRING' => 'foo=bar',
'REMOTE_PORT' => '34770',
'HTTP_USER_AGENT' => 'lwp-request/2.06',
'SERVER_SIGNATURE' => '',
'SERVER_PORT' => '5000',
'REMOTE_ADDR' => '127.0.0.1',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'PATH' => '/home/moseley/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games',
'REQUEST_URI' => '/?foo=bar',
'GATEWAY_INTERFACE' => 'CGI-Perl/1.1',
'SERVER_ADDR' => '127.0.0.1',
'DOCUMENT_ROOT' => '/home/moseley/apache',
'PATH_TRANSLATED' => '/home/moseley/apache/',
'HTTP_HOST' => 'localhost:5000',
'UNIQUE_ID' => 'QMDDXMCoAQIAAE8dAak',
'MOD_PERL' => 'mod_perl/1.29'
};
Now with PerlSetupEnv Off the parameter doesn't make it.
moseley@bumby:~/apache$ GET http://localhost:5000/?foo=bar
Param "foo" is [undefined]
$VAR1 = {
'PATH' => '/home/moseley/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games',
'GATEWAY_INTERFACE' => 'CGI-Perl/1.1',
'MOD_PERL' => 'mod_perl/1.29'
};
--
Bill Moseley
moseley@hank.org
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: PerlSetupEnv and CGI.pm
Posted by Bill Moseley <mo...@hank.org>.
On Fri, Jun 04, 2004 at 03:05:36PM -0400, Perrin Harkins wrote:
> On Fri, 2004-06-04 at 14:49, Bill Moseley wrote:
> > With PerlSetupEnv OFF $cgi->param('foo') returns undef. I'm sure this
> > is suppose to work
>
> "Scripts using the CGI.pm module require PerlSetupEnv On because that
> module relies on a properly populated CGI environment table."
I read right past that! I thought I'd used it before without problems
and a quick look at CGI.pm showed:
if ($meth=~/^(GET|HEAD)$/) {
if ($MOD_PERL) {
$query_string = $self->r->args;
so I expected it would work to get the args.
> It doesn't use it very much, but it does use it. If you wanted to, you
> could probably change a few lines in CGI.pm and get it to work without
> %ENV populated.
It's for an example script that can be run as a mod_perl handler or as a CGI
script, so it's handy to use CGI.pm. I'll just note that PerlSetupEnv
must be on in the docs.
>
> - Perrin
>
>
--
Bill Moseley
moseley@hank.org
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: PerlSetupEnv and CGI.pm
Posted by Perrin Harkins <pe...@elem.com>.
On Fri, 2004-06-04 at 14:49, Bill Moseley wrote:
> With PerlSetupEnv OFF $cgi->param('foo') returns undef. I'm sure this
> is suppose to work
"Scripts using the CGI.pm module require PerlSetupEnv On because that
module relies on a properly populated CGI environment table."
http://perl.apache.org/docs/1.0/guide/performance.html#PerlSetupEnv_Off
It doesn't use it very much, but it does use it. If you wanted to, you
could probably change a few lines in CGI.pm and get it to work without
%ENV populated.
- Perrin
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html