php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #52555 Headers_List not returning HTTP Status Code
Submitted: 2010-08-06 12:50 UTC Modified: 2010-12-11 14:47 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: dragoonis@php.net Assigned: dragoonis (profile)
Status: Closed Package: *Web Server problem
PHP Version: 5.3.3 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: dragoonis@php.net
New email:
PHP Version: OS:

 

 [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"
}

Patches

http_response_code (last revision 2010-08-08 22:49 UTC by dragoonis@php.net)