Yes, it's ensembl :) 

Here is the output from envview ;)

SCRIPT_NAME => /perl/Gallus_gallus/envview
SERVER_NAME => www.mydomain.org
ENSEMBL_FIRSTSESSION_ID => 2
ENSEMBL_SPECIES => Gallus_gallus
SERVER_ADMIN => webmaster@mydomain.org
HTTP_ACCEPT_ENCODING => gzip, deflate
HTTP_CONNECTION => Keep-Alive
REQUEST_METHOD => GET
HTTP_ACCEPT => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/x-shockwave-flash, application/vnd.ms-excel,
application/vnd.ms-powerpoint, application/msword, */*
SCRIPT_FILENAME => /usr/local/ensembl/perl/default/envview
HTTP_UA_CPU => x86
SERVER_SOFTWARE => Apache
QUERY_STRING => 
REMOTE_PORT => 1248
HTTP_USER_AGENT => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
InfoPath.1)
SERVER_PORT => 80
SERVER_SIGNATURE => 
HTTP_ACCEPT_LANGUAGE => en-gb
HTTP_COOKIE =>
__utma=178564727.1690238308.1174479254.1175092438.1175502956.4;
__utmz=178564727.1175502956.4.3.utmccn=(referral)|utmcsr=cl.iah.bbsrc.ac
.uk|utmcct=/|utmcmd=referral; ENSEMBL_AJAX=activex;
ENSEMBL_WWW_FIRSTSESSION=b6405de3f30eecfa0b122fed466e83c30b048c587adb301
71b780652
REMOTE_ADDR => 149.155.42.148
SERVER_PROTOCOL => HTTP/1.1
MOD_PERL_API_VERSION => 2
PATH => # long path so removed
REQUEST_URI => /Gallus_gallus/envview
GATEWAY_INTERFACE => CGI/1.1
ENSEMBL_SCRIPT => envview
SERVER_ADDR => 149.155.40.20
DOCUMENT_ROOT => /usr/local/ensembl/htdocs
HTTP_HOST => iahc-linux13.iah.bbsrc.ac.uk
MOD_PERL => mod_perl/2.0.3

So it was a nice idea, but it would seem the scripts are running under
mod_perl.

You said that "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.".  As I cannot find the code in mapview or
contigview, or in fact any of the other *views to print out the header,
is it possible to assume that ensembl relies on apache/mod_perl's
ability to do this, and for some reason, my version/installation of
apache/mod_perl just isn't doing it?

Are there any known bugs that could possibly be causing this behaviour?

Many thanks
Mick


-----Original Message-----
From: Robert Landrum [mailto:[EMAIL PROTECTED] 
Sent: 18 April 2007 17:11
To: michael watson (IAH-C)
Cc: modperl@perl.apache.org
Subject: Re: Malformed header from script

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

Reply via email to