[EMAIL PROTECTED] wrote:
> Hi,
> 
> In a regular Apache configuration style, this works for me:
> 
> <Directory /usr/local/httpd/htdocs/capmon/>
> <Files '_*.mod'>
>   PerlSetEnv PERL5LIB /opt/capmon/inc:/usr/local/httpd/htdocs/capmon/cgi
>   PerlSendHeader On
>     SetHandler perl-script
>     PerlHandler Apache::Registry
> </Files>
> </Directory>
> 
> Now why doesn't this work in a <perl> </perl> section, :
> 
> $Directory = {
>   '/usr/local/httpd/htdocs/capmon/' => {
>     'Files' => {
>       '_*.mod' => {
>         'PerlHandler' => 'Apache::Registry',
>         'PerlSendHeader' => 'On',
>         'PerlSetEnv' => [
>           'PERL5LIB',
>           '/opt/capmon/inc:/usr/local/httpd/htdocs/capmon/cgi'
>         ],
>         'SetHandler' => 'perl-script'
>       }
>     }
>   }
> };
> 
> It gives no errors, but just doesn't treat it as CGI. As far as I can see,
> it is *exactly* equivalent to the <Directory> section at the top, isn't it?
> 
> In a <perl> </perl> section, this works *does* work:
> 
> $Files = {
>   '_*.mod' => {
>     'PerlHandler' => 'Apache::Registry',
>     'PerlSendHeader' => 'On',
>     'PerlSetEnv' => [
>       'PERL5LIB',
>       '/opt/capmon/inc:/usr/local/httpd/htdocs/capmon/cgi'
>     ],
>     'SetHandler' => 'perl-script'
>   }
> };
> 
> But it isn't limited to the /usr/local/httpd/htdocs/capmon/ directory.
> 
> How do I restrict it to a particular directory?
> 
> I've read the
> http://perl.apache.org/docs/1.0/guide/config.html#Apache_Configuration_in_Perl
> 
> section
>      and
> http://modperl.com:9000/book/chapters/ch8.html#Configuring_Apache_with_Perl
> and especially from the last reference, I've tried to follow the "Directive
> is a Nested Block " section exactly. Are there any other pointers?

Peter, there are two problems:

1. you misread the usage explanations

It cannot be:

$Directory = { }

it must be:

%Directory = ().

Reread 
http://modperl.com:9000/book/chapters/ch8.html#Configuring_Apache_with_Perl
again for the explanation. It seems that you've snipped the part from 
the virtual host examples but didn't set the right type for Directory.

2. It seems that there is a bug in the code that handles the Files 
sections when they are nested inside another section. I'll post a 
separate report regarding this to the dev list.

here is a workaround that should solve your problem:

$Directory{'/usr/local/httpd/htdocs/capmon/'} = {
     FilesMatch =>  {
         '\.pl$' => {
             'Options'        => '+ExecCGI',
             'SetHandler'     => 'perl-script',
             'PerlSendHeader' => 'On',
             'PerlHandler'    => 'Apache::Registry'
         },
     },
};

add 'PERL5LIB' etc...

> P.S: When you subscribe to this mailing list, or when you look for the FAQ
> on Google, you are pointed towards:
> http://perl.apache.org/faq/
> But this is a 404...

This doc has been dissolved into various docs, spread across various 
dirs, so it's impossible to add a rewrite rule. Hence the 404. I'll fix 
the mailing list doc to reflect the reality. Thanks for the report. 
Hopefully Google will catch up with the changes on the site soon.

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

Reply via email to