|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-04-25 16:00 UTC] jani@php.net
[2009-04-27 09:52 UTC] c dot c dot dean at durham dot ac dot uk
[2009-05-05 18:45 UTC] lbarnaud@php.net
[2009-05-06 08:15 UTC] c dot c dot dean at durham dot ac dot uk
[2021-04-21 11:51 UTC] cmb@php.net
-Status: Open
+Status: Wont fix
-Type: Bug
+Type: Feature/Change Request
-Assigned To:
+Assigned To: cmb
[2021-04-21 11:51 UTC] cmb@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 22:00:02 2025 UTC |
Description: ------------ If you invoke header("HTTP/1.0 200 OK"); from PHP in CGI mode, the header is never output, because it's suppressed at line 379 in sapi/cgi/cgi_main.c. If you use any value other than 200, it is output correctly. This means for instance, that if you use PHP in CGI mode as an Apache errordocument handler, you cannot send back a non-error 200 OK to the user. The following trivial change fixes this, but you might prefer a more elegant solution. --- php-5.2.9/sapi/cgi/cgi_main.c.orig 2009-01-19 18:17:59.000000000 +0000 +++ php-5.2.9/sapi/cgi/cgi_main.c 2009-03-09 14:04:11.000000000 +0000 @@ -376,7 +376,7 @@ return SAPI_HEADER_SENT_SUCCESSFULLY; } - if (CGIG(nph) || SG(sapi_headers).http_response_code != 200) + if (CGIG(nph) || SG(sapi_headers).http_response_code != 666) { int len; zend_bool has_status = 0; @@ -914,7 +914,7 @@ SG(request_info).request_uri = NULL; SG(request_info).content_type = NULL; SG(request_info).content_length = 0; - SG(sapi_headers).http_response_code = 200; + SG(sapi_headers).http_response_code = 666; /* script_path_translated being set is a good indication that we are running in a cgi environment, since it is always Reproduce code: --------------- Use this as the Apache errordocument handler: <?php header("HTTP/1.0 200 OK"); echo "This is OK"; ?> Expected result: ---------------- HTTP/1.0 200 OK in the header and "This is OK" in the body Actual result: -------------- HTTP/1.0 404 Not Found