You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Brett Lee <br...@yahoo.com> on 2012/01/02 22:41:31 UTC

Registry and mod_include - multiple invocations of a script in an SSI-parsed file

Hello,

First, thank you very much for your time & consideration of this problem,


Have been trying to resolve an issue without success.  The issue I'm seeing is that calling the same script several times within a SSI-parsed file causes each invocation of the script to produce the same result even though different results should be seen.


To clarify, please find inlined below an example SSI-parsed file and script: 
<!-- file test.shtml -->
<html>
<head></head>
<body>
<!--#include virtual="/cgi-bin/test.cgi?count=5"-->
<!--#include virtual="/cgi-bin/test.cgi?count=10"-->
<!--#include virtual="/cgi-bin/test.cgi?count=30"-->
</body>
<html>

#!/usr/bin/perl -w
# test.cgi
use strict;
use CGI qw(-compile :all);
my $count = param('count');
my $a = 0;
print header;
while ( $a < $count) {
print ++$a;
}

When run from the default /var/www/cgi-bin/ directory, execution works 
as expected; results are 1..5, 1..10 and 1..30.  However, when the executable is run from the ModPerl Registry directory 
below, each invocation counts only to 5. 
<Directory /var/www/registry>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
#   PerlOptions +ParseHeaders (prevented 2+ invocations)
Options +ExecCGI
</Directory>

Sure seems like "something" is caching part or all of the command/param.  Hoping to find out what.


Once again, thanks for your time & consideration.


Note: previously posted at: http://www.perlmonks.org/?node_id=945804


Best regards,
- -
Brett Lee
Encrypt your data with PDS - http://crypto.brettlee.com/

Re: Registry and mod_include - multiple invocations of a script in an SSI-parsed file

Posted by Brett Lee <br...@yahoo.com>.
Thanks for the reply Mårten,

Sorry, should have posted that I found the (same) answer a few days back.


http://www.perlmonks.org/?node_id=946773

Didn't hear a peep from the list after a couple attempts, so abandoned the query.

 
Best regards,
- -
Brett Lee
Encrypt your data with PDS - http://crypto.brettlee.com/


>________________________________
> From: Mårten Svantesson <ma...@travelocitynordic.com>
>To: modperl@perl.apache.org 
>Sent: Wednesday, January 11, 2012 3:29 PM
>Subject: Re: Registry and mod_include - multiple invocations of a script in an SSI-parsed file
> 
>Hi Brett,
>
>My guess is that you run into a problem of the CGI module not resetting itself between executions of your code.
>
>As a test you could try entering the line.
>
>CGI::initialize_globals();
>
>explicitly in your script before calling param().
>
>2012-01-02 22:41, Brett Lee wrote:
>> Hello,
>>
>> First, thank you very much for your time & consideration of this problem,
>>
>> Have been trying to resolve an issue without success. The issue I'm seeing is that calling the same script several times within a SSI-parsed file
>> causes each invocation of the script to produce the same result even though different results should be seen.
>>
>> To clarify, please find inlined below an example SSI-parsed file and script:
>>
>> <!-- file test.shtml -->
>> <html>
>> <head></head>
>> <body>
>> <!--#include virtual="/cgi-bin/test.cgi?count=5"-->
>> <!--#include virtual="/cgi-bin/test.cgi?count=10"-->
>> <!--#include virtual="/cgi-bin/test.cgi?count=30"-->
>> </body>
>> <html>
>>
>> #!/usr/bin/perl -w
>> # test.cgi
>> use strict;
>> use CGI qw(-compile :all);
>> my $count = param('count');
>> my $a = 0;
>> print header;
>> while ( $a < $count) {
>> print ++$a;
>> }
>>
>> When run from the default /var/www/cgi-bin/ directory, execution works as expected; results are 1..5, 1..10 and 1..30. However, when the executable is
>> run from the ModPerl Registry directory below, each invocation counts only to 5.
>>
>> <Directory /var/www/registry>
>> SetHandler perl-script
>> PerlResponseHandler ModPerl::Registry
>> # PerlOptions +ParseHeaders (prevented 2+ invocations)
>> Options +ExecCGI
>> </Directory>
>>
>> Sure seems like "something" is caching part or all of the command/param. Hoping to find out what.
>>
>> Once again, thanks for your time & consideration.
>>
>> Note: previously posted at: http://www.perlmonks.org/?node_id=945804
>>
>> Best regards,
>> - -
>> Brett Lee
>> Encrypt your data with PDS - http://crypto.brettlee.com/
>
>
>-- 
>   Mårten Svantesson
>   Senior Developer
>   Travelocity Nordic
>   +46 (0)8 505 787 23
>
>
>

Re: Registry and mod_include - multiple invocations of a script in an SSI-parsed file

Posted by Dave Hodgkinson <da...@gmail.com>.
On 11 Jan 2012, at 15:29, Mårten Svantesson wrote:

> Hi Brett,
> 
> My guess is that you run into a problem of the CGI module not resetting itself between executions of your code.
> 
> As a test you could try entering the line.
> 
> CGI::initialize_globals();
> 
> explicitly in your script before calling param().


Ooooh.

I have a situation where in a perfectly ordinary Apache::Registry script, sometimes
Template::Toolkit doesn't add the auto-headers and footers to the pages.

I wonder if abw doing something jiggy that might be upsetting the globals.

/me tries...

Wow. That did the trick!

Mårten, if we ever meet, I owe you lots of Aquavit or equivalent.



Re: Registry and mod_include - multiple invocations of a script in an SSI-parsed file

Posted by Mårten Svantesson <ma...@travelocitynordic.com>.
Hi Brett,

My guess is that you run into a problem of the CGI module not resetting itself between executions of your code.

As a test you could try entering the line.

CGI::initialize_globals();

explicitly in your script before calling param().

2012-01-02 22:41, Brett Lee wrote:
> Hello,
>
> First, thank you very much for your time & consideration of this problem,
>
> Have been trying to resolve an issue without success. The issue I'm seeing is that calling the same script several times within a SSI-parsed file
> causes each invocation of the script to produce the same result even though different results should be seen.
>
> To clarify, please find inlined below an example SSI-parsed file and script:
>
> <!-- file test.shtml -->
> <html>
> <head></head>
> <body>
> <!--#include virtual="/cgi-bin/test.cgi?count=5"-->
> <!--#include virtual="/cgi-bin/test.cgi?count=10"-->
> <!--#include virtual="/cgi-bin/test.cgi?count=30"-->
> </body>
> <html>
>
> #!/usr/bin/perl -w
> # test.cgi
> use strict;
> use CGI qw(-compile :all);
> my $count = param('count');
> my $a = 0;
> print header;
> while ( $a < $count) {
> print ++$a;
> }
>
> When run from the default /var/www/cgi-bin/ directory, execution works as expected; results are 1..5, 1..10 and 1..30. However, when the executable is
> run from the ModPerl Registry directory below, each invocation counts only to 5.
>
> <Directory /var/www/registry>
> SetHandler perl-script
> PerlResponseHandler ModPerl::Registry
> # PerlOptions +ParseHeaders (prevented 2+ invocations)
> Options +ExecCGI
> </Directory>
>
> Sure seems like "something" is caching part or all of the command/param. Hoping to find out what.
>
> Once again, thanks for your time & consideration.
>
> Note: previously posted at: http://www.perlmonks.org/?node_id=945804
>
> Best regards,
> - -
> Brett Lee
> Encrypt your data with PDS - http://crypto.brettlee.com/


-- 
   Mårten Svantesson
   Senior Developer
   Travelocity Nordic
   +46 (0)8 505 787 23

Re: Registry and mod_include - multiple invocations of a script in an SSI-parsed file

Posted by Brett Lee <br...@yahoo.com>.
Hello,


Thought to reboot this query from a couple days ago in hopes of gaining some insight into a solution.  Have added configuration information:


Linux - CentOS

mod_perl-2.0.4-6.el5
httpd-2.2.3-45.el5.centos
perl-5.8.8-32.el5_5.2
/usr/lib/perl5/5.8.8/CGI.pm shows version 3.15


Many thanks!
 
Best regards,
- -
Brett Lee
Encrypt your data with PDS - http://crypto.brettlee.com/


>________________________________
> From: Brett Lee <br...@yahoo.com>
>To: "modperl@perl.apache.org" <mo...@perl.apache.org> 
>Sent: Monday, January 2, 2012 2:41 PM
>Subject: Registry and mod_include - multiple invocations of a script in an SSI-parsed file
> 
>
>Hello,
>
>
>First, thank you very much for your time & consideration of this problem,
>
>
>
>Have been trying to resolve an issue without success.  The issue I'm seeing is that calling the same script several times within a SSI-parsed file causes each invocation of the script to produce the same result even though different results should be seen.
>
>
>
>To clarify, please find inlined below an example SSI-parsed file and script: 
><!-- file test.shtml -->
><html>
><head></head>
><body>
><!--#include virtual="/cgi-bin/test.cgi?count=5"-->
><!--#include virtual="/cgi-bin/test.cgi?count=10"-->
><!--#include virtual="/cgi-bin/test.cgi?count=30"-->
></body>
><html>
>
>#!/usr/bin/perl -w
># test.cgi
>use strict;
>use CGI qw(-compile :all);
>my $count = param('count');
>my $a = 0;
>print header;
>while ( $a < $count) {
>print ++$a;
>}
>
>When run from the default /var/www/cgi-bin/ directory, execution works 
as expected; results are 1..5, 1..10 and 1..30.  However, when the executable is run from the ModPerl Registry directory 
below, each invocation counts only to 5. 
><Directory /var/www/registry>
>SetHandler perl-script
>PerlResponseHandler ModPerl::Registry
>#   PerlOptions +ParseHeaders (prevented 2+ invocations)
>Options +ExecCGI
></Directory>
>
>Sure seems like "something" is caching part or all of the command/param.  Hoping to find out what.
>
>
>
>Once again, thanks for your time & consideration.
>
>
>
>Note: previously posted at: http://www.perlmonks.org/?node_id=945804
>
>
>Best regards,
>- -
>Brett Lee
>Encrypt your data with PDS - http://crypto.brettlee.com/
>
>