michael watson (IAH-C) wrote:
[Wed Apr 18 09:56:55 2007] [notice] Apache/2.2.4 (Unix) mod_perl/2.0.3
Perl/v5.8.0 configured -- resuming normal operations
[Wed Apr 18 09:56:57 2007] [error] [client 149.155.40.20] malformed
header from script. Bad header=<head>: mapview
[Wed Apr 18 09:56:57 2007] [warn] /perl/Gallus_gallus/mapview did not
send an HTTP header
[Wed Apr 18 09:57:45 2007] [error] [client 149.155.42.148] malformed
header from script. Bad header=<head>: mapview
[Wed Apr 18 09:57:45 2007] [warn] /perl/Gallus_gallus/mapview did not
send an HTTP header
So this is Ensembl were dealing with, correct?
I must confess, I don't really know what the Apache::Registry and
ModPerl::Registry modules actually do, but the code in question is
handled by ModPerl::Registry. From httpd.conf (mostly a perl script!):
That's okay. I've never actually used either of them. In the CGI
world, when a perl script is called it's read, parsed, compiled, and
executed for each request. Then the script terminates.
ModPerl::Registry reads, parses, and compiles the perl script once, and
just keeps it in memory for any subsequent requests. The caveat is that
sometimes global variables don't get reset to their original states
because, well, the script doesn't ever exit.
$Location{"/perl"}={
SetHandler => 'perl-script',
PerlHandler => 'ModPerl::Registry',
# Options => '+ExecCGI',
allow => 'from all',
# PerlSendHeader => 'On',
PerlOptions => '+ParseHeaders',
};
This all seems right. It should be examining the output of contigview
and mapview to determine if there's a content type header, and if not,
it will send text/html.
I suspect that /perl may not actually be running in mod_perl.
I would add a file to /perl called env.
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
for (keys %ENV) {
print "$_ => $ENV{$_}\n";
}
That should print out a line like MOD_PERL => 'mod_perl/2.0.3' if it's
working correctly. If not, it's a configuration problem. Maybe the
/perl location config isn't in the virtual host you're using?
Rob