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 18:57:10 GMT
On Tue, Apr 13, 2010 at 6:34 PM, Fred Moyer <fred@redhotpenguin.com> wrote:

> Correct me if I'm wrong, but don't you need to do this:
>
> PerlPassEnv TE
>
> in your httpd.conf?
>
>
Hey Fred,

That looks correct and I added PerlPassEnv to the virtual host config, but I
still don't see the word 'TEST' when accessing
http://localhost/index.htmlwhile using the TE::ST package shown below.
Am I using $ENV{"TE"}
incorrectly? FWIW, I tried using $ENV{TE} with identical results. I also
added PerlPassEnv HOME to the virtual host config and a '$buffer .=
$ENV{HOME}' to the TE::ST package but did not see the path in the
/index.html output either. Any ideas what I'm missing?

Thanks,

Chris


> On Mon, Apr 12, 2010 at 11:44 AM, Chris Datfung <chris.datfung@gmail.com>
> 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