perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Datfung <chris.datf...@gmail.com>
Subject Re: accessing environment variables set by other modules
Date Tue, 13 Apr 2010 15:29:54 GMT
Thanks mate.

Unfortunately neither of those suggestions worked. Any other ideas?

Chris

On Mon, Apr 12, 2010 at 10:15 PM, Adam Prime <adam.prime@utoronto.ca> wrote:

> you might want to take a look at subprocess_env
>
>
> http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_subprocess_env_
>
> I don't think i've every tried to use %ENV in a Filter, perhaps it's not
> getting populated.  %ENV can be a little strange in mp2, have a look at:
>
>
> http://perl.apache.org/docs/2.0/user/troubleshooting/troubleshooting.html#C_Libraries_Don_t_See_C__ENV__Entries_Set_by_Perl_Code
>
> though that would seem to be unrelated to your issue.
>
> Adam
>
>
>
> Chris Datfung wrote:
>
>> I want to use mod-perl to edit server responses under certain conditions.
>> My plan was to use various modules, like mod-setenvif and mod-security to
>> set an environment variable and then have mod-perl edit the response body
>> only run when the environment variable is set. I tried the following test
>> which was supposed to append 'TEST' to my index.html page:
>>
>> in the virtual host config I have:
>>
>>        SetEnvIf Request_URI "\.html$" TE=TEST
>>        PerlRequire "/opt/modperl/TE/ST.pm"
>>        PerlOutputFilterHandler TE::ST
>>
>> the contents of /opt/modperl/TE/ST.pm is:
>> ======================================================================
>> package TE::ST;
>>
>> use strict;
>> use warnings;
>>
>> use Apache2::Filter ();
>> use Apache2::RequestRec ();
>> use APR::Table ();
>>
>> BEGIN { push @INC, "/opt/modperl/"; }
>>
>> use Apache2::Const -compile => qw(OK);
>> use constant BUFF_LEN => 1024;
>>
>> sub handler
>> {
>>        my $f = shift;
>>
>>        unless ($f->ctx)
>>        {
>>                while ($f->read(my $buffer, BUFF_LEN))
>>                {
>>                        $buffer =~ s/It/Chris/g;
>>                        $buffer .= $ENV{"TE"};
>>                        $f->print($buffer);
>>                }
>>                return Apache2::Const::OK;
>>        }
>> }
>> 1;
>> ========================================================================
>>
>> The script correctly changes the 'It' in the index.html file to 'Chris'
>> but I don't see the value of the 'TE' variable in the response body. Can
>> someone point me to an example of how modperl can access environment
>> variables set by other apache modules?
>>
>> Thanks,
>>
>> - Chris
>>
>
>

Mime
View raw message