php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #50168 FastCGI fails with wrong error on HEAD request to non-existant file
Submitted: 2009-11-13 16:21 UTC Modified: 2009-11-30 16:01 UTC
From: matthijs at spilgames dot com Assigned: dmitry (profile)
Status: Closed Package: CGI/CLI related
PHP Version: 5.2.11 OS: Linux
Private report: No CVE-ID: None
 [2009-11-13 16:21 UTC] matthijs at spilgames dot com
Description:
------------
A HEAD request on a non-existant file causes a FastCGI child process to exit with a code 255 (or -1).

Reproduce code:
---------------
Perform a HEAD request against an URL handled by the FastCGI SAPI. No response will be returned and the child process will exit.

If you attach GDB to the child process while doing above, it will display "Program exited with code 0377.".

In my particular case the webserver responds as well by sending a '502 Bad Gateway' response.

Expected result:
----------------
~ $ curl -I 'http://www.example.com/void.php'
HTTP/1.1 404 Not Found
Server: nginx
Date: Fri, 13 Nov 2009 16:14:00 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive


Actual result:
--------------
~ $ curl -I 'http://www.example.com/void.php'
HTTP/1.1 502 Bad Gateway
Server: nginx
Date: Fri, 13 Nov 2009 16:12:41 GMT
Content-Type: text/html
Content-Length: 138
Connection: keep-alive


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-11-14 01:24 UTC] jani@php.net
Works fine for me. Same PHP version, FastCGI, only difference is that I use lighttpd. Where do you get the idea anything is actually crashing?
Also, WHAT is in that script of yours?
 [2009-11-16 11:40 UTC] matthijs at spilgames dot com
I should have mentioned that most webservers do a lookup on the filesystem and return a 404 by themselves. My webserver does not in this configuration and for lighttpd you'd have to use the 'check-local' parameter for your fastcgi configuration to get the same behaviour.

Your question to WHAT actually is in the script: there is no script! That's the whole point. If I'd do a GET request PHP would be returning the well known 'No input file specified.' message together with a 404 header. For a HEAD request I'd expect the 404 header without the message. Instead of returning the header the FastCGI process bails out with a -1 exit code. It's not a segmentation fault, but it's still a 'crash' of one of the child processes in the sense that it exits wrongly.
 [2009-11-16 16:26 UTC] jani@php.net
Fixed summary and category since this isn't a crash.
 [2009-11-30 13:51 UTC] jani@php.net
Dmitry promised to fix this today. :)
 [2009-11-30 14:43 UTC] svn@php.net
Automatic comment from SVN on behalf of dmitry
Revision: http://svn.php.net/viewvc/?view=revision&revision=291497
Log: Fixed bug #50168 (FastCGI fails with wrong error on HEAD request to non-existant file)
 [2009-11-30 14:43 UTC] dmitry@php.net
This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Mar 19 08:01:29 2024 UTC