Subject: Re: lighttpd - problems with cgi scripts
From: Brian Dessent <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Sat, 25 Sep 2004 17:19:50 -0700

"Gerrit P. Haase" wrote:

> #!/usr/bin/perl
> 
> use strict;
> use CGI::Carp qw(fatalsToBrowser);
> 
> print "Content-type: text/html\n\n";
                                ^^^^^
This is not a valid CGI script.  All HTTP headers must be terminated by
CRLF, so you'd have to use "\r\n\r\n" here.  But it's generally regarded
as a bad thing to explicitly emit headers yourself if you're using the
CGI module, which takes care of all such things for you.  As you noted
your example that does it the right way (by calling header()) works
fine.

Traditionally, Apache has been able to work around CGI script authors
that can't read RFC2616, which is why you'll still find examples of crap
like this on the web.  But apparently lighthttpd is not as forgiving.

> However, I have a complex script here which works.  There I get an error
> when I try to connect a postgres database, DBI says:
>    could not create socket: Operation not permitted
> 
> I tried to connect from perl to postgres that works, then I tried the
> same script calling from lighttpd, it fails with the above mentioned
> symptoms.

This sounds suspiciously like the "SYSTEMROOT being removed from the
environment" problem.

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/