[cgiapp] Location not found with CGI::Application::Dispatch under mod_perl V 2

Ron Savage ron at savage.net.au
Mon Sep 1 18:32:09 EDT 2008


Hi Michael

On Mon, 2008-09-01 at 10:06 -0400, Michael Peters wrote:
> Ron Savage wrote:
> 
> > use CGI::Application::Plugin::Apache;
> 
> Just a word of warning about C::A::P::Apache. The idea was that 
> $self->query would return an Apache::Request object instead of a CGI.pm 
> object. This would make things faster and use less memory. But so many 
> other C::A plugins assume that $self->query is a CGI.pm object that if 
> you use CAP::Apache with other plugins things break in weird ways. So, 
> as the author of CAP::Apache, I'd warn against using it if you want to 
> use any other C::A plugins. If you just want to use it by itself, it 
> should be fine though.

Thanx for the reminder. I did note that after reading the docs, and am
prepared to see where this takes me.

I'm not committed to Apache::Request. I can easily fall back to
CGI::Simple, as always.

And, in reference to the other post, I was thinking of trying Titanium,
and am appropriately uneasy about the CGI-dependency issue :-(.

> > <Location /local>
> > 	SetHandler perl-script
> > 	PerlResponseHandler CGI::Application::Dispatch
> > 	PerlSetVar CGIAPP_DISPATCH_PREFIX Local
> > </Location>
> 
> You can use C::A::Dispatch as the handler if you want, but I would 
> recommend that you subclass it and create your own dispatch table in 
> your subclass. It's much easier to control things.

Will do. It's just more work....

> > (4)
> > I'm hoping to hit http://127.0.0.1/local/sites and have
> > CGI::Application::Dispatch fire up Local::Sites, but I get:
> > Not Found
> > The requested URL /local/sites was not found on this server.
> 
> Not Found is what Dispatch returns when it either can't translate the 
> PATH_INFO into a module name or can't find the module.

OK. I was wondering if Apache was looking for /local/sites before
Dispatch had a change to kick in. I shall investigate.

> > (5)
> > There is nothing in logs/error_log, and only this in logs/access_log:
> > 127.0.0.1 - - [01/Sep/2008:15:01:18 +1000] "GET /local/sites HTTP/1.1"
> > 404 209
> > 
> > Is the problem that the docs for CGI::Application::Dispatch are Apache
> > V1 oriented, and that something different needs to be done for V2?
> 
> It should work with V2. Try setting debug to true in your subclass and 
> see what happens. Or can set it within apache's config using 
> CGIAPP_DISPATCH_DEBUG (I just realized this isn't documented)
> 
>    PerlSetVar CGIAPP_DISPATCH_PREFIX 1

s/PREFIX/DEBUG/ if ($I_guess_correctly);

-- 
Ron Savage
ron at savage.net.au
http://savage.net.au/index.html




More information about the cgiapp mailing list