On Wed, 8 Aug 2001, Jay Buffington wrote:
Hi,
In my httpd.conf file I have:
Location /foo/
SetHandler perl-script
PerlTypeHandler foo
PerlHandler bar
/Location
and then in the foo and bar files I have:
--file foo.pm-
package foo;
sub handler {
my $r = shift;
$r-log_error(I'm in foo.);
}
1;
--file bar.pm-
package bar;
sub handler {
my $r = shift;
$r-log_error(I'm in bar.);
}
1;
I would expect this experiment would print out I'm in foo. followed by I'm in
bar. to my apache error log. It only prints I'm in foo. If I remove the
PerlTypeHandler line from the httpd.conf I get only I'm in bar. If I leave the
TypeHandler but omit the PerlHandler, and add
$r-push_handlers(PerlHandler=\bar::handler); to foo.pm I still only get I'm in
foo.
I'm using Perl 5.6 and mod_perl 1.25 with apache 1.3.19
Why does this not work as I expected?
because your PerlTypeHandler has returned the value 0 (aka OK), the type
handler phase is 'run first' (stop at first to return anything other than
DECLINED), which means mod_mime's type handler is never run so
r-handler never gets configured. you either need to return DECLINED in
your PerlTypeHandler or set $r-handler('perl-script') yourself.