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 Thu, 15 Apr 2010 09:10:49 GMT
On Thu, Apr 15, 2010 at 12:23 AM, Perrin Harkins <pharkins@gmail.com> wrote:

> The subprocess_env info that Adam sent you should have worked.  Can
> you show us what you tried?  Can you try it in a response handler to
> make sure it's not an odd bug with filters?
>
>
Hi Perrin,

Thanks, subprocess_env works when just using a response handler. When used
with a filter I get the following error message:

==================================================================
[Thu Apr 15 11:47:34 2010] [error] [client 127.0.0.1] Can't locate object
method "subprocess_env" via package "Apache2::Filter" at
/opt/modperl//TE/ST.pm line 40.\n
[Thu Apr 15 11:47:34 2010] [debug] core.c(3765): [client 127.0.0.1]
(500)Unknown error 500: default_handler: ap_pass_brigade returned 500
[Thu Apr 15 11:47:34 2010] [error] [client 127.0.0.1] Can't locate object
method "subprocess_env" via package "Apache2::Filter" at
/opt/modperl//TE/ST.pm line 40.\n
==================================================================

Can I test the script to use Apache2:RequestRec for the subprocess_env?

The source of the package is as follows:
==================================================================
package TE::ST;

use strict;
use warnings;
use Apache2::Filter ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use APR::Table ();

BEGIN { push @INC, "/opt/modperl/"; }

use Apache2::Const -compile => qw(OK);
use constant BUFF_LEN => 1024;

sub handler
{
    my $f = shift;
    $f->subprocess_env;
    my $envar = $ENV{TE};


    unless ($f->ctx)
    {
        while ($f->read(my $buffer, BUFF_LEN))
        {
            $buffer =~ s/It/Chris/g;
            $buffer .= "[" . $envar . "]";
            $f->print($buffer);
        }
        return Apache2::Const::OK;
    }
}
1;
==================================================================

Finally, the TE Apache environment variable is set in the virtual host
config via:

SetEnv TE TEST

Thanks,
- Chris

Mime
View raw message