I think you need to wrap it in a files block. The location block is sending all files to the perl handler.
I had this problem, except it was trying to execute all of my non-perl files. Inside location, put something like <Location /b> <FilesMatch "\.(pl|pm|cgi)$"> ... your mod_perl configs here .... </FilesMatch> </Location> --- Bill Rini <[EMAIL PROTECTED]> wrote: > Here's a little snippet from a sample script: > > package MyApache::MyPackage; > > use strict; > use warnings; > > use Apache::RequestRec (); > use Apache::RequestIO (); > use Apache::DBI; > use APR::Table; > use Apache::Const qw(OK REDIRECT DECLINED); > use Apache::RequestUtil (); > > sub handler { > > my $r = shift; > my $current_uri = $r->uri; > my $content_type = $r->content_type; > my @fields = split(/\//, $current_uri); > > > # Let's see if the file exists first > > return Apache::DECLINED unless !-e $r->filename; > > > # other stuff happens past this point but this is enough to document > the > problem. > } > > Here's my the relevant settings in my config file: > > <Location /b> > PerlSendHeader On > SetHandler perl-script > PerlHandler MyApache::MyPackage > </Location> > > OK, so this is set up as a PerlResponseHandler on a virtual server. > When the > handler is invoked, it loads the page (a php page) but doesn't parse > it in > PHP before displaying to the browser. I just get back the raw php > code. > Actually, this is somewhat misleading. On Opera it displays the code. > In IE > it asks me whether or not I want to download it or open it. When I > remove > the handler config in the conf files Apache handles it just as it > should (it > parses the php correctly) but with the handler in there when I go to > http://localhost/b/b.php I get. > > <?php > > print "Hello World"; > > ?> > > instead of the actual printing out of "Hello World". Here's the > results > from a telnet session: > > GET /b/b.php HTTP/1.1 > Host: localhost > > HTTP/1.1 200 OK > Date: Wed, 20 Aug 2003 19:54:02 GMT > Server: Apache/2.0.47 (Unix) mod_perl/1.99_09 Perl/v5.8.0 > mod_ssl/2.0.47 > OpenSSL/0.9.7a DAV/2 PHP/4.3.2 > Last-Modified: Wed, 20 Aug 2003 10:45:31 GMT > ETag: "21c229-3f-ef2ea8c0" > Accept-Ranges: bytes > Content-Length: 63 > Content-Type: application/x-httpd-php > > <?php > > print "Hello World"; > > ?> > Connection closed by foreign host. > > When I've telneted into the the machine and called the file directly > it > seems that the proper content type is being set but in the browser > (as > mentioned above) IE reports the content-type as blank (there's a null > value > in the popup box for content-type when it asks me to download or open > the > file). No errors appear in the log files. > > Now, I know it's executing because it actually processes the code > below that > line which ends in a redirect. But if I try to exit the handler > because > it's not the correct type of request it seems to mess up the proper > handling > of php and html files. Image files seem to appear correctly but that > may be > the browser compensating or reading the encoding type. > > Of course, if anybody has an easier suggestion on what I'm trying to > do: > > I want the document root directory to be handled by the > PerlResponseHandler > (i.e. Location /). For specific types of requests I would like the > above > handler to look up some information in the database and return the > info > dynamically. The only time I don't want that to happen is if the file > > already exists OR it's pointing to a directory that exists that has a > > default document type in it (ie index.html or index.php). Everything > else I > want the handler to do something special with. > > So, for instance, if I have the following files: > > /index.html > /somefile.html > /somedir/index.html > /somedir/somefile2.html > > Any request to: > > http://localhost/ > http://localhost/index.html > http://localhost/somefile.html > http://localhost/somedir/ > http://localhost/somedir/index.html > http://localhost/somedir/somefile2.html > > Should all just be handled normally. But if I get a request for: > > http://localhost/abc/def/ > or > http://localhost/somedir/abcdef > > I want the above perl handler to parse the uri and do > something different (directories /abc/def and /abcdef/ would not > actually exist). > > TIA for any help on this. > > Bill > > > > ```````````````````````````````````````` > DISCLAIMER: The views expressed by the author of this email may or > may not > be his/her views, the views of any company s/he represents, or the > views of > any persons living, dead, or undead. This email message, including > any > attachments, is for the sole use of the intended recipient(s). If > you have > received this e-mail in error do not open it. Any errors in facts, > spelling, or tact are transmission errors caused by your email > client. > > http://www.windowsix.com > > _________________________________________________________________ > <b>Get MSN 8</b> and help protect your children with advanced > parental > controls. http://join.msn.com/?page=features/parental > > > > -- > Reporting bugs: http://perl.apache.org/bugs/ > Mail list info: http://perl.apache.org/maillist/modperl.html > ===== www.bluewolverine.com __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html