php4-cgi --> internal server errror
Benjamin Thelen (CCGIS)
thelen at ccgis.de
Mon Aug 25 12:16:40 PDT 2003
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.
...to 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 php.net 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!
More information about the freebsd-questions