|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2010-08-06 12:50 UTC] dragoonis@php.net
Description:
------------
Ok so i've found the reason why this doesn't work but i'd like feedback on the appropriate area to change as this looks like it was intentionally developed this way.
headers_list() gets passed SG(sapi_headers).headers and prints them.
This works however when you do header() -> sapi_header_op() and you set a response code such as 'HTTP/1.0 404 Not Found'.
It does not put this header into SG(sapi_headers).headers but it puts it into SG(sapi_headers).http_response_code instead.
This looks to be intentional as there are special functions for updating the response code such as sapi_update_response_code()
So the end question is, should I modify sapi_header_op() to also include the response code in SG(sapi_headers).headers or should I modify headers_list() to receive SG(sapi_headers).headers and SG(sapi_headers).http_response_code.
I could also make a new function which only returns SG(sapi_headers).http_response_code but i think that's a waste of time and could update headers_list() or whatnot.
FYI: I tested apache_response_headers() and got no http response code in their either.
Test script:
---------------
<?php
header("Content-type: text/plain");
header('HTTP/1.0 404 Not Found');
var_dump(headers_list()); exit;
Expected result:
----------------
array(3) {
[0]=>
string(34) "X-Powered-By: PHP/5.3.2-1ubuntu4.2"
[1]=>
string(30) "Content-type: text/plain"
[2]=>
string(22) "HTTP/1.0 404 Not Found"
}
Actual result:
--------------
array(2) {
[0]=>
string(34) "X-Powered-By: PHP/5.3.2-1ubuntu4.2"
[1]=>
string(30) "Content-type: text/plain"
}
Patcheshttp_response_code (last revision 2010-08-08 22:49 UTC by dragoonis@php.net)httpd_response_code (last revision 2010-08-08 22:48 UTC by dragoonis@php.net) Pull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 22:00:01 2025 UTC |
Hey jorrit at ncode dot nl, If you see the following link, the current implementation of the function http_response_code is the following: /* {{{ proto long http_response_code([int response_code]) 284 Sets a response code, or returns the current HTTP response code */ http://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/head.c#283 Hope this helps. Regards, Paul Dragoonis.