You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Dan McGuirk <mc...@incompleteness.net> on 2002/03/26 19:46:21 UTC

Getting configuration into a filter

Hi,

I'm writing a filter using modperl-2.0, and trying to figure out how to
get per-directory configuration information passed into it.  I've tried
both PerlSetVar and PerlSetEnv, but nothing seems to be getting
through.  Below is a section of the httpd.conf and the code.

The attempt to reference dir_config gives:

Can't locate object method "dir_config" via package "Apache::Filter"
(perhaps you forgot to load "Apache::Filter"?) at {path}/RewriteLinks.pm
line 117. 

The environment variable has no value.

Thanks for any help you can provide.


<Location /filtered> 
  PerlOutputFilterHandler RewriteLinks 
  PerlOptions +SetupEnv 
  PerlSetVar CurrentDirectory /foobie 
  PerlSetEnv SomeVar SomeValue 
</Location> 

sub handler { 
    my $filter = shift; 
 
#    $filter->print("<!-- current directory: " .
$filter->dir_config->get("CurrentDirectory") . " --\
>\n"); 
    $filter->print("<!-- SomeVar is " . $ENV{'SomeVar'} . "-->\n"); 
}

Re: Getting configuration into a filter

Posted by Stas Bekman <st...@stason.org>.
Dan McGuirk wrote:
> Hi,
> 
> I'm writing a filter using modperl-2.0, and trying to figure out how to
> get per-directory configuration information passed into it.  I've tried
> both PerlSetVar and PerlSetEnv, but nothing seems to be getting
> through.  Below is a section of the httpd.conf and the code.
> 
> The attempt to reference dir_config gives:
> 
> Can't locate object method "dir_config" via package "Apache::Filter"
> (perhaps you forgot to load "Apache::Filter"?) at {path}/RewriteLinks.pm
> line 117. 
> 
> The environment variable has no value.
> 
> Thanks for any help you can provide.
> 
> 
> <Location /filtered> 
>   PerlOutputFilterHandler RewriteLinks 
>   PerlOptions +SetupEnv 
>   PerlSetVar CurrentDirectory /foobie 
>   PerlSetEnv SomeVar SomeValue 
> </Location> 
> 
> sub handler { 
>     my $filter = shift; 
>  
> #    $filter->print("<!-- current directory: " .
> $filter->dir_config->get("CurrentDirectory") . " --\
> 
>>\n"); 
> 
>     $filter->print("<!-- SomeVar is " . $ENV{'SomeVar'} . "-->\n"); 
> }

dir_config is an Apache::RequestRec method, you need to do:

$filter->r->dir_config->get("CurrentDirectory");

you may need to require Apache::RequestUtil if it wasn't loaded yet.

As of this moment the tests in t/ are your best source for figuring out 
how to do things with new features.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com