Edit report at https://bugs.php.net/bug.php?id=50921&edit=1
ID: 50921
Comment by: xmeltrut at gmail dot com
Reported by: phpbug at starurl dot com
Summary: '200 OK' HTTP status despite PHP error
Status: Re-Opened
Type: Bug
Package: HTTP related
Operating System: *
PHP Version: 5.2.12
Block user comment: N
Private report: N
New Comment:
I would agree that this is a bug. If there has been a server error, we should not be returning a 200
response. If IE then does not display it, that is a problem for IE to look at. The wrong header
causes a lot of problems, especially for AJAX>
Previous Comments:
------------------------------------------------------------------------
[2015-05-25 17:33:23] josh dot ribakoff at gmail dot com
+1
This is a BUG in my books. Until it is fixed, I can't simply tail an error log. Instead
I'd have to go manually exercise every feature & invoke every code path in my app &
painstakingly analyze the network responses of all my ajax calls to detect any possible errors.
Horrible.
------------------------------------------------------------------------
[2014-07-09 23:00:27] yohgaki@php.net
See also
https://bugs.php.net/bug.php?id=61417
------------------------------------------------------------------------
[2014-07-08 20:38:33] jonathan at spoonity dot com
Ah yes, I remember that. The IE limit a minimum of 512 byte of data to show the outputted data.
Perhaps there could be an ini setting to choose if the status code will be 200 or 500, with the
default being the current behaviour?
------------------------------------------------------------------------
[2014-07-08 19:28:31] tyrael@php.net
here is the thread I've started about this behavior:
http://www.serverphorums.com/read.php?7,965893
it turned out that we added the explicit display_errors check for not setting the http 500 response
code because Internet Explore will show a custom error page for non-2xx responses if the length of
the response body is less than an arbitrary threshold, hence it won't show the error message if
we set the http 500.
I don't think that this change was a good idea back then, but it is possible that changing it
now would cause more harm than good.
I will keep this ticket open until we either reach a consensus that this should be fixed in a future
release, or should be kept as-is and the documentation is updated to reflect current behavior.
------------------------------------------------------------------------
[2014-07-08 17:19:55] jonathan at spoonity dot com
A workaround for those interested is the following:
register_shutdown_function(function() {
$error = error_get_last();
if ($error['type'] == E_ERROR) {
header('HTTP/1.1 500 Internal Server Error');
}
});
Be nice to see this fixed without this workaround though.
------------------------------------------------------------------------
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
https://bugs.php.net/bug.php?id=50921
--
Edit this bug report at https://bugs.php.net/bug.php?id=50921&edit=1