[Catalyst] Re: Incorrect $c->req->base using
Catalyst::Engine::SCGI on Win32
Tomas Doran
bobtfish at bobtfish.net
Sun Jul 12 00:34:05 GMT 2009
On 30 Jun 2009, at 14:51, Will Hawes wrote:
> Having played around with this a little more it looks as though when
> things are working properly, REQUEST_URI is the same as SCRIPT_NAME
> concatenated with PATH_INFO. With that in mind, perhaps revising the
> suggested fix to something like this:
>
> sub prepare_path { # or _fix_env?
> my( $self, $c ) = @_;
> my $env = $self->env;
> my $path_info = $env->{PATH_INFO} || '';
> my $script_name = $env->{SCRIPT_NAME} || '';
> my $request_uri = $env->{REQUEST_URI} || '';
> unless( $request_uri eq $script_name . $path_info ) {
> delete $env->{SCRIPT_NAME};
> }
> return $self->next::method( $c );
> }
>
> To be absolutely safe we could limit it to just this OS/web server as
> you suggest:
>
> if( $^O eq 'MSWin32' && $env->{SERVER_SOFTWARE} =~ m{^Apache/2\.
> 0\.63} ) {
> ...
> }
>
> Let me know your thoughts on the above and I'll get to work on it.
I'd maybe limit it to Win32 and apache (but don't be version
specific) if this isn't happening to unix folks, but yeah - that
looks fine, maybe pulling the logic out in the same way that has been
done in the fastcgi engine?
http://github.com/orlandov/Catalyst-Engine-SCGI/tree/master
Cheers
t0m
More information about the Catalyst
mailing list