> > Basically, it all boils down to the fact that once an SSI directive > > with #EXEC CGI is parsed, the document fails to parse any further > > SSI directives *if the script to be executed has a perl-script > > handler.* > > from the manpage: > > * When chaining handlers via Apache::Filter, if you use <!--#include...--> > or <!--#exec cgi=...-->, then Apache::SSI must be the last filter in the > chain. This is because Apache::SSI uses $r->lookup_uri(...)->run to > include the files, and this sends the output through C's stdout rather than > Perl's STDOUT. Thus Apache::Filter can't catch it and filter it.
I'm not sure if it's the same problem as I was having (I was using Apache::OutputChain instead because it seems to be more memory-friendly), but switching to Apache::Filter with Apache::SSI *almost* works: <Files ~ "\.phtml$"> SetHandler perl-script PerlSetVar Filter On PerlModule Apache::Filter Apache::RegistryFilter Apache::SSI PerlHandler Apache::RegistryFilter Apache::SSI </Files> The problem now is that everything is sent out encoded as text/plain. If I add a line like this AddType text/html .phtml The problem goes away and everything is hunky-dory. But that seems wrong. Is it? Am I missing something? Turning PerlSendHeader On or Off doesn't change things any. > for a way around this, see recipe 10.2 in the mod_perl developer's > cookbook: > > http://www.modperlcookbook.org/code/ch10/Cookbook/SSI.pm Cool, thanks! I'll try to get Apache::Filter working first, but if that doesn't work, it's good to have a fallback. That looks like a great resource. I'm definitely ordering a copy! > > you can also try Apache::FakeSSI (includes with Apache::SSI) but I haven't > tried it myself. Does anyone know how to force Apache::SSIChain to use Apache::FakeSSI instead of Apache::SSI? It was giving me fits. Chris -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html