php4-cgi --> internal server errror

Lin Jianfong ljfong at
Tue Aug 26 20:29:07 PDT 2003


I think I know what you're talking about, it's the UMN Mapserver for GIS 
application. Basically it's the php-mapscript part which needs php to be 
compiled as cgi. It's a wonderful open source GIS app which works very nice 
and very stable once configured correctly but it's a major pain in the butt 
to get it right.

As for the internal server error "premature end of script header", it could 
be either one of the many reasons :
- the http header is not properly generated.
- wrong permission
- wrong directory path
- apache port is screwed.
- php4-cgi port is screwed.
- and some other reasons unknown.

Try writing a simple php script which contains <?php phpinfo() ?> and cat it 
through the php binary in your cgi-bin. See if it generates proper HTTP 
header + all the config stuffs correctly. I upgraded to php4.3.3rc4 from the 
port on my own box and I have different problem altogether. The last working 
version of php compiled as cgi for me is from 4.3.0 version, that is, not 
installing from port but by hand instead (tar xzvf, config,...manually). So 
try by hand as well, and see if anything changes. You do have a backup copy 
of last working php-cgi binary, don't you ?

Sorry can't help any farther but I share your pain man.

Date: Mon, 25 Aug 2003 21:12:08 +0200 (CEST)
From: "Benjamin Thelen (CCGIS)" <thelen at>
Subject: php4-cgi --> internal server errror
To: freebsd-questions at
Message-ID: <4885. at>
Content-Type: text/plain;charset=iso-8859-1


sorry, I've already posted this into the German user list, but as I am
still completely stuck I hope to find some more hints/help here.

FreeBSD 4.7 (mod_php4 - a little changed)& 4.8 (php4-cgi - the latest)
Apache 1.3.27 and 28

We need to run php as cgi, because of the requirements of software we run
(called umn-mapserver - if somebody knows). Half a year ago I basically
followed the instructions I found on the umn-mapserver wiki-pages:

I quote, that's shorter:

PHP's default 'configure' behavior is to build a 'php' CGI executable.
It's the --with-apxs and/or --with-apache PHP configure options that
enable PHP to be built as an Apache DSO. build PHP as a CGI ... don't provide the --with-apxs or
--with-apache switch to the PHP configure.

Then once you have a 'php' executable, copy it to your server's cgi-bin
directory and add to your httpd.conf:

  AddType?  application/x-httpd-php .php3
  AddType?  application/x-httpd-php .phtml
  AddType?  application/x-httpd-php .php

  Action application/x-httpd-php /cgi-bin/php


As I could not find an ordinary php-port (not sure now, it's month ago), I
removed one "--with-apxs" entry within the Makefile from www/mod_php4 (!)
and php ran as cgi!

Half a year later, I updated the ports-tree and I was happy to see a
www/php4-cgi port and immediately checked this out on a test system. This
time, I did not edit the php4-cgi makefile of course, as I expected to
have php4 as cgi compiled. I again copied the php-binary, as said above to
cgi-bin and surprisingly saw only "500 - internal server error" and I
found a "Premeture end of script headers: /usr/local/www/cgi-bin/php in

One thing you have to know is, that our scripts are in
/usr/local/www/data/"our-php-application". This worked on this 4.7/this
edited mod_php4-system very well.

I posted to the Germany user list, checked google. I found a few hints,
but nothing really helped.

My question basically is:
How do I setup this php/cgi environment?

One way, I was told and can be found on is to add a
"#!/usr/local/lib/php" on top of every php-Skript and all scripts need
chmod a+x and need to be in /cgi-bin. This would work. But it is a little
uncomfortable way and the main thing is that it would not work with our
"php-application", which is a set of css, html, php, pictures, so
pictures, css, etc would be parsed, too!

There are other solutions, one with an AddHandler directive in httpd.conf,
but I don't get that running.

As it worked half a year ago and as there is a similar way in IIS, to map
an extension (.php) to an application (c:\php\bin\php.exe), I suppose that
there is a similar way, but I am just to blind to find the solution!

My second question is:
Why did it work with those instructions from umn-mapserver wiki-pages and
why does the same thing not work now?

One way to find out, what's wrong, was to cp /bin/cat to
/usr/local/www/cgi-bin/php. But the error is the same.

I would be very grateful for hints/help!

Thanks in advance!

Best Regards,

Get MSN 8 and help protect your children with advanced parental controls.

More information about the freebsd-questions mailing list