Re: php(5)-cgi + Apache2 + fastcgiexternalserver = lost hair

From: Date: Tue, 24 Jul 2007 20:23:37 +0000
Subject: Re: php(5)-cgi + Apache2 + fastcgiexternalserver = lost hair
References: 1 2  Groups: php.install 
Request: Send a blank email to php-install+get-18130@lists.php.net to get a copy of this message
Yup. Build php as a cgi binary, and then start it with -b flag. You can choose the port you want to run it on. Then use fastcgiexternalserver (or equivalent) to connect to it. Keith Roberts wrote:
AFAIR I have never heard of hosting apache and php on seperate machines. I don't even know if you can connect to php remotely, say like MySQL on a specified port? Kind Regards Keith Roberts On Tue, 24 Jul 2007, Paul Blondé wrote:
To: php-install@lists.php.net From: Paul Blondé <jpb@entel.ca> Subject: RE: [PHP-INSTALL] php(5)-cgi + Apache2 + fastcgiexternalserver = lost
     hair
wait...are you saying that you are hosting your PHP on one machine, and your Apache on another? Does Apache+PHP support remoting like that? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Paul Blondé -----Original Message----- From: Tony Shadwick [mailto:tshadwick+php.net@oss-solutions.com] Sent: Tuesday, July 24, 2007 11:02 AM To: php-install@lists.php.net Subject: [PHP-INSTALL] php(5)-cgi + Apache2 + fastcgiexternalserver = lost hair Okie. I've been googling for days on this now, and I've come across several PHP bug reports that basically say this is a configuration error, and not a php bug. If that's true, I seriously need help. On my web server box, I'm running Apache2.1, and in my httpd.conf file I have this: FastCGIExternalServer /path/to/stub/fcgi-bin/php -host php-host:9000 Then in my Includes/site.conf (individual sites each have their own config file), I have this: AddHandler php-cgi .php Action php-cgi /fcgi-bin/php ScriptAlias /fcgi-bin/php ScriptAlias /fcgi-bin/php /path/to/stub/fcgi-bin/php Then I have a directive that adds +ExecCGI to the user's directory. So far so good. Restart apache. On the php-host box, I've compiled:
php5-5.2.3          PHP Scripting Language (Apache Module and CLI)
I start it using php-cgi -b 9000. The port accepts connections just fine. When I go to browse to a simple script on my web host that has: <? phpinfo(); ?> I get "No input file specified." on screen, and in the logs I get what oddly appears to be a 404 message: 172.16.12.2 - - [23/Jul/2007:22:27:12 -0500] "GET /phpinfo.php HTTP/1.1" 404 25 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3" Except it's really not a 404. If I get rid of the php handler, it returns the text of the script just fine. I've googled this mess forwards and backwards, and what I come across is that there appears to be some sort of a tiff between PHP and web servers, where web servers usually pass along the environment variable SCRIPT_NAME, whereas PHP wants SCRIPT_FILENAME in order to determine that it is running in cgi mode (I think?). I've done everything I can think of to facilitate that. I've adjusted the relavent setting in php.ini on the php host cgi.fix_pathinfo=1 Restart the php-cgi binary, does no good. I've tried making mod-rewrite changes on apache2 to force SCRIPT_FILENAME to be assigned, that doesn't work. I've tried manually assigning a SCRIPT_FILENAME environment variable on the shell that I'm executing php-cgi from. That too fails. Out of desperation, I finally ran tcpdump -w ~/phpdump.txt -i em0 port 9000 on the php-cgi host. I won't bore you with everything that wireshark says about it, rather, the most relevant part gets revealed by strings I think: # strings ~/phpdump.txt REDI SCRIPT_NAME/fcgi-bin/ Status: 404 X-Powered A few things stand out to me here: number one, SCRIPT_NAME appears to be getting sent, 2 it looks like php-cgi is the one returning 404, not the web server, and finally....this is getting a bit truncated, isn't it? I'd fully expect to find the full X-Powered header there, and if it's going to say /fcgi-bin/, I'd expect to find /fcgi-bin/php. and REDI....? Anyone have an idea what I can do to fix this up? The file DOES exist. It'd currently chmod 777 to make sure it's not a permissions thing (it's just phpinfo at this point anyway....). The traffic *is* being sent to port 9000 on the php-cgi host. What else can I do? Tony Shadwick OSS Solutions


« previous php.install (#18130) next »