ID: 41593 Comment by: dan at sypher7 dot com Reported By: jonepet at dcvhost dot no Status: No Feedback Bug Type: CGI related Operating System: Linux PHP Version: 5.2.3 Assigned To: dmitry New Comment:
I previously reported that this issue was only effecting PHP4 and not PHP5. I've now seen PHP 5.2.5 throw 500 errors as well (using mod_fastcgi). I believe there are actually two different bugs here. One of them is with PHP 4.4.8. That bug is that fastcgi mode PHP does not clean up and exit properly (send headers, etc.) on a SIGTERM from the fastcgi process manager. It simply dies and returns no headers resulting in the 500 error in Apache. This is incorrect cleanup on the part of PHP. Doing some further digging, there appear to be indications that the fastcgi process manager will send a SIGKILL after a SIGTERM if the process doesn't finish sufficiently fast. Although I did see comments indicating this in the mod_fastcgi code, and corresponding code that would do that on Win32 platforms, I could not find in the source code that mod_fastcgi's process manager would actually do this for a *nix platform, so I'm unsure if this is actually happening. In any case, the problem with PHP5 throwing the 500 errors seems to be that it is getting a SIGKILL from someone (either Apache or mod_fastcgi), which isn't really a PHP bug, but something to be looked into with either apache or the fastcgi people. I'm investigating that, but the issues with PHP4 still stand. Previous Comments: ------------------------------------------------------------------------ [2008-02-26 08:48:08] marekm at apnet dot pl I can confirm that the same problem happens with Apache 2.2.8 + mod_fastcgi 2.4.6 + PHP 5.2.5 ie. graceful restarts always cause error 500. This is absolutely repeatable. ------------------------------------------------------------------------ [2008-02-18 19:13:22] dan at sypher7 dot com I just wanted to follow up: I recently installed PHP 5.2.5 alongside 4.4.8. With the identical setup. PHP4 will cause the internal server error, but PHP5 will not. So this appears to be a PHP4-only issue. ------------------------------------------------------------------------ [2008-02-15 21:59:49] dan at sypher7 dot com I was able to reproduce this in the 4.4.8 version of PHP using the latest mod_fastcgi and Apache 1.3. >From what I understand, a graceful reload sends a SIGUSR1 to Apache. The FastCGI processor manager then sends SIGTERMs to all of the running processes. Instead of exiting cleanly, the PHP script ends abruptly and doesn't even finish sending headers. Here is what Apache's log had to say about it: FastCGI: incomplete headers (0 bytes) received from server "/path/to/php-fcgi-wrapper" I've tried messing with the FastCgiConfig settings a lot, but nothing in there appears to be changing the result. I do not know either codebase well, so I can't say with certainty if this is a mod_fastcgi or PHP bug. It would appear that either PHP isn't closing out cleanly on a SIGTERM or mod_fastcgi isn't waiting around for the process to end. ------------------------------------------------------------------------ [2007-12-18 01:00:01] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2007-12-10 16:15:16] [EMAIL PROTECTED] I'm not able to reproduce the HTTP 500 response on graceful restart with PHP_5_3, mod_fastcgi and Apache. ------------------------------------------------------------------------ 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/41593 -- Edit this bug report at http://bugs.php.net/?id=41593&edit=1