Hi,

I'm trying to get setup with apache2/modperl2 and am seeing an odd problem that I can't seem to find a resource/faq help on.

Dropping in mod_perl2 seems to change the status code of a simple CGI script:

    use CGI;
use CGI::Carp qw(fatalsToBrowser); # show fatal error messages in browser
    my $query = new CGI;
    my $status = "400 Bad Request";
    print $query->header( -type => 'text/plain', -status => $status );
    print "TESTING 400 BAD REQUEST";
    exit;

Under plain CGI, this returns a response:

    TESTING 400 BAD REQUEST

and a check of the response gives back 400.

However, under mod_perl2, I get back this

TESTING 400 BAD REQUEST<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0// EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.8 (Unix) DAV/2 mod_perl/2.0.3 Perl/v5.8.8 Server at localhost Port 8080</address>
</body></html>


The html message is from a 400 document, but the title (and response status) are 200 OK (not to mention their shouldn't be a html message for plain text). No amount of fiddling with options or googling has had any yield.

Any help would be appreciated.

Michael Yoder
[EMAIL PROTECTED]

Additional Info:
This is a fresh install of darwinports, and via darwinports perl,apache2,mod_perl2 on a OSX 10.5 Leopard macbook pro.

Server configuration:
NameVirtualHost *
<VirtualHost *>
    ServerAdmin [EMAIL PROTECTED]
    ServerSignature On
    DocumentRoot /opt/local/apache2/cgi-bin
    LogLevel warn
    ErrorLog /opt/local/apache2/logs/error_log
    CustomLog /opt/local/apache2/logs/access_log combined

    PerlOptions +ParseHeaders
    PerlTaintCheck On
    PerlWarn On
PerlConfigRequire /opt/local/apache2/cgi-bin/rec/ mod_perl_startup.pl

    # ModPerl::Registry mode (just change URL to run in different mode)
    Alias /perl-bin/ /opt/local/apache2/cgi-bin/
    # ModPerl::PerlRun mode (just change URL to run in different mode)
    Alias /perlrun-bin/ /opt/local/apache2/cgi-bin/

    # perl stays in memory, scripts loaded at startup as well
    <Location /perl-bin/>
        Options +ExecCGI
        PerlOptions +ParseHeaders
        SetHandler perl-script
        PerlHandler ModPerl::Registry
        Order allow,deny
        Allow from all
    </Location>

    # perl stays in memory, scripts loaded each time
    <Location /perlrun-bin/>
        Options +ExecCGI
        PerlOptions +ParseHeaders
        SetHandler perl-script
        PerlHandler ModPerl::PerlRun
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

Startup Script:
use lib "/opt/local/apache2/cgi-bin/rec";
use Log::Log4perl ();
use ModPerl::Registry ();
1;


Reply via email to