#43173 [Fbk->Csd]: FastCGI broken due to invalid descriptor

From: Date: Tue, 20 Nov 2007 12:27:33 +0000
Subject: #43173 [Fbk->Csd]: FastCGI broken due to invalid descriptor
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-119879@lists.php.net to get a copy of this message
ID: 43173 User updated by: davidb at chelsea dot net Reported By: davidb at chelsea dot net -Status: Feedback +Status: Closed Bug Type: CGI related Operating System: Solaris 2.8 PHP Version: 5.2.4 Assigned To: dmitry New Comment: ARGH. I misunderstood your comment. In retrospect, I see what you were trying to say, and yes, that is indeed the problem. I have closed the bug. Thank you for the clarification. Previous Comments: ------------------------------------------------------------------------ [2007-11-20 08:50:52] jani@php.net And my point was that this happened (yes, it was needed to fix certain issues): File: NEWS -----8<------ 31 May 2007, PHP 5.2.3 - Changed CGI install target to php-cgi and 'make install' to install CLI when CGI is selected. (Jani) -----8<------ So what you have there called 'php' is actually the CLI binary. The cgi binary is called 'php-cgi'.. ------------------------------------------------------------------------ [2007-11-19 19:35:59] davidb at chelsea dot net Greetings. I don't know how else to convince everyone that I'm using the right file. But, here goes: - I run the EXACT SAME CONFIGURE SCRIPT for 5.2.0 and 5.2.4. It looks like this: ./configure --prefix=/opt/php/5.2.4 \ --with-zlib=/usr/local \ --with-mysql=/usr/local \ --with-db4=/usr/local \ --with-config-file-path=/usr/local/etc/php \ --enable-gd-native-ttf \ --with-jpeg-dir=/usr/local \ --with-openssl=/usr/local \ --with-gd=/usr/local \ --with-png-dir=/usr/local \ --with-freetype-dir=/usr/local \ --with-mhash=/usr/local \ --with-mm=/usr/local \ --with-xsl=/usr/local \ --with-zend-vm=CALL \ --with-curl=/usr/local \ --with-imap=/usr/local \ --with-imap-ssl=/usr/local \ --with-libxml-dir=/usr/local \ --enable-spl \ --enable-calendar \ --enable-fastcgi \ --enable-force-cgi-redirect \ --enable-sockets \ --enable-mbstring You'll know the first line allows us to change the directory that we build in so we can test new versions. - /usr/local/bin/php5 is a symlink pointing to the currently active version on the test machine. We also sometimes exec /opt/php/5.2.4/bin/php directly, there's no difference in failure type. - 5.2.0 works without a problem (as to 5.0.3 and 4.X); 5.2.3 and 5.2.4 do not. - Here's the output of ls -l: -rwxr-xr-x 1 root other 39685444 Aug 12 08:34 /opt/php/5.2.0/bin/php* -rwxr-xr-x 1 root other 40515124 Aug 6 10:49 /opt/php/5.2.3/bin/php* -rwxr-xr-x 1 root other 41271848 Nov 13 10:37 /opt/php/5.2.4/bin/php* We've been doing this with PHP/FastCGI for years now. Please advise. If there's anything else you'd like to see, please let me know and I'll be happy to add it in. How/where does PHP decide to launch in FastCGI mode v. CGI mode when it is exec'd by the web server? Did the win32 changes in 5.2.2 leak into UNIX somehow? ------------------------------------------------------------------------ [2007-11-19 18:59:34] jani@php.net And you're sure php5 is the cgi binary and not the CLI binary? As of some version we changed the binary name to be php-cgi. What was the configure line you used? ------------------------------------------------------------------------ [2007-11-16 13:53:20] davidb at chelsea dot net PHP under apache uses it's own process manager to spawn children. I believe you can disable that so Apache does it itself, but I prefer to manage it in PHP so we can control the number of PHP works without editing httpd.conf. Here's the relevant configuration. In httpd.conf, I set up the PHP server as follows: AddHandler php-fastcgi .php <Location /cgi-bin/php> SetHandler fastcgi-script </Location> Action php-fastcgi /cgi-bin/php DirectoryIndex index.html index.shtml index.php AddType application/x-httpd-php .php FastCgiServer /export/httpd/DOMAINS/fastcgi.com/cgi-bin/php -processes 1 The FastCgiServer is a shell script that execs the PHP process. We use it to set shell variables that we might need: #!/bin/sh PHP_FCGI_CHILDREN=2 export PHP_FCGI_CHILDREN exec /usr/local/bin/php5 All of this has worked fine for PHP 4.X, 5.0.X, 5.1.X, and 5.2.0. It broke sometime after 5.2.0. David. ------------------------------------------------------------------------ [2007-11-16 13:23:48] dmitry@php.net What do you mean in "Using the php proc manager to control children"? Could you show your configuration files. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/43173 -- Edit this bug report at http://bugs.php.net/?id=43173&edit=1

« previous php.bugs (#119879) next »