[sf-perl] mod_perl and DocumentRoot question

Fred Moyer fred at redhotpenguin.com
Thu Mar 8 18:27:31 PST 2007

spidaman at arachna.com wrote:
> You mean, like in httpd.conf
> <Location /batz>
>   SetHandler perl-script
>   PerlHandler Quinn::Batz
> </Location>

If you find yourself with too many of these pesky Location directives, 
you can use Apache::Dispatch 
(http://search.cpan.org/~phred/Apache-Dispatch-0.10_01/) to make your 
life easier (disclosure - I'm the maintainer).

Also if you don't need ENV variable access, you can use SetHandler 
modperl there to get a little speed boost.

> and in perl space:
> package Quinn::Batz;
> use strict; # duh
> sub handler {
>     my $r = shift;
>     # do stuff with the Apache API
> }
> 1;
> so that /batz is mapped to your perl module? The key here is that Apache 
> can resolve virtual paths with <Location> containers, including running 
> modperl handlers. 
> On Thu, 8 Mar 2007, Quinn Weaver wrote:
>> I'm almost embarrassed to be asking this, but I've forgotten the
>> solution, and my old code belongs to someone else.  (Does this mean
>> I've forgotten more mod_perl than most hackers know? ;) ) I've checked
>> the mod_perl Cookbook and run some searches, but to no avail.
>> The problem is that Apache expects me to have a path in my DocumentRoot
>> for each URL I support.  For instance, if I have
>> http://www.example.com/foo/bar/
>> http://www.example.com/batz/
>> Then it expects there to be directories
>> /var/www/foo/bar
>> /var/www/batz
>> This is silly, because my PerlHandler is generating the content--it's not
>> stored in static files on disk.  Moreover, I have dynamically generated URLs
>> like http://www.example.com/user/quinn/edit .
>> What is the solution to this dumb problem?  Somebody throw me a rope. ;)
>> Thanks,

More information about the SanFrancisco-pm mailing list