|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-04-17 14:13 UTC] dsimic99 at gmail dot com
Description:
------------
I'm setting up an Apache2 (2.0.59) server with PHP4 (4.4.6) and PHP5 (5.2.1) support, both are compiled as FastCGI's (mod_fastcgi-2.4.2), using Suexec.
Here's an excerpt from httpd.conf (server config context):
FastCgiWrapper /usr/local/apache2/bin/suexec
SuexecUserGroup www www
Action php4-fcgi /php/4
Action php5-fcgi /php/5
AddHandler php4-fcgi .php .php4 .php3
AddHandler php5-fcgi .php5
Alias /php/4 "/htdocs/.fcgi/php4-cgi"
Alias /php/5 "/htdocs/.pcgi/php5-cgi"
<LocationMatch "^/php/[45]/.*$">
Options ExecCGI
SetHandler fastcgi-script
Order Allow,Deny
Allow from All
</LocationMatch>
<LocationMatch "^/php/[45]/(php[45]-cgi)?$">
Options None
Order Allow,Deny
Deny from All
</LocationMatch>
/htdocs/.fcgi/php4-cgi and /htdocs/.fcgi/php5-cgi are simple shell scripts ("wrappers"), here's php5-cgi (php4-cgi is almost the same):
#!/bin/sh
export PHPRC=/usr/local/php-cgi/etc/php5
export PHP_FCGI_CHILDREN=4
export PHP_FCGI_MAX_REQUESTS=1000
exec /usr/local/php-cgi/bin/php5-cgi
Everything runs great, but when I point my browser to http://server.domain.tld/php/5/random-garbage , I get the wrapper script echoed back in the browser, minus the shebang line. Pointing the browser to http://server.domain.tld/php/4/random-garbage results in "No input file specified.", what's perfectly Ok.
Why (and how?) is the PHP5 performing like that?
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 07:00:01 2025 UTC |
I've reviewed the PHP source and made a small "dirty" ;) patch in sapi/cgi/cgi_main.c: diff -urN php-5.2.1.ORIG/sapi/cgi/cgi_main.c php-5.2.1/sapi/cgi/cgi_main.c --- php-5.2.1.ORIG/sapi/cgi/cgi_main.c 2007-01-29 20:36:01.000000000 +0100 +++ php-5.2.1/sapi/cgi/cgi_main.c 2007-04-20 14:48:48.000000000 +0200 @@ -1696,7 +1696,9 @@ if we are unable to open path_translated and we are not running from shell (so fp == NULL), then fail. */ - if (retval == FAILURE && file_handle.handle.fp == NULL) { + if (retval == FAILURE && file_handle.handle.fp == NULL + || strstr(file_handle.filename, "php4-cgi") + || strstr(file_handle.filename, "php5-cgi")) { SG(sapi_headers).http_response_code = 404; PUTS("No input file specified.\n"); #if PHP_FASTCGIThe following configuration works for me. httpd.conf ========== ... LoadModule fastcgi_module libexec/mod_fastcgi.so AddHandler php-fcgi .php Action php-fcgi /cgi-bin/php.fpl <Location /cgi-bin/php.fpl/*> Options ExecCGI SetHandler fastcgi-script Order Allow,Deny Allow from All </Location> /usr/local/apache/cgi-bin/php.fpl ================================= #!/bin/sh export PHP_FCGI_CHILDREN=0 export PHP_FCGI_MAX_REQUESTS=1000 exec /usr/local/apache/cgi-bin/php === It is nothing to fix in PHP!