ID: 47687
User updated by: make dot fire at gmail dot com
Reported By: make dot fire at gmail dot com
-Status: Feedback
+Status: Open
Bug Type: HTTP related
-Operating System: windows server 2008
+Operating System: windows server vista
PHP Version: 5.3CVS-2009-03-17 (snap)
New Comment:
I try to use the lastest snapshots (PHP 5.3 (5.3.0beta2-dev),VC9 x86
Non Thread Safe (2009-Mar-17 13:00:00)),got the same result.
some infomation from phpinfo():
System: Windows NT 6.0 build 6001 (Windows Vista Ultimate Edition
Service Pack 1) i586
Build Date: Mar 17 2009 12:55:17
Compiler: MSVC9 (Visual C++ 2008)
Architecture: x86
Server API: CGI/FastCGI
CGI section:
Directive Local Value Master Value
cgi.discard_path 0 0
cgi.fix_pathinfo 1 1
cgi.force_redirect 0 0
cgi.nph 0 0
cgi.redirect_status_env no value no value
cgi.rfc2616_headers 0 0
fastcgi.impersonate 1 1
fastcgi.logging 1 1
webserver is IIS7, PHP run in FastCGI mode(use php-cgi.exe).
I use HttpWatch to catch response header,
when use code:
<?php
header('HTTP/1.1 303 See Other');
header("Location: http://www.php.net/");
exit;
?>
the status line in response is:
HTTP/1.1 302 Redirect
and when use code:
<?php
header('HTTP/1.1 303 See Other');
exit;
?>
the status line in response is:
HTTP/1.1 303 See Other
Previous Comments:
------------------------------------------------------------------------
[2009-03-17 11:03:24] [email protected]
First of all, both of your examples work fine for me and produce the
expected results. You did not mention what web server you are using? And
exactly what PHP version are you using?
------------------------------------------------------------------------
[2009-03-17 10:01:55] make dot fire at gmail dot com
And, the workaround in #25044 is not working,
the code:
header("Location: http://www.php.net/");
header('HTTP/1.1 303 See Other');
or
header("Location: http://www.php.net/");
header('HTTP/1.1 303 See Other', true, 303);
will result same response header:
HTTP/1.0 302 Found
Location: http://www.php.net/
------------------------------------------------------------------------
[2009-03-17 09:54:21] make dot fire at gmail dot com
Description:
------------
This bug is identical to bug #25044.
When setting the "Location" HTTP header using the header() function,
PHP automatically changes the HTTP response status to "302 Found",
Whether other status codes is already set or not.
Reproduce code:
---------------
file1.php:
<?php
header('HTTP/1.1 201 Created');
header("Location: http://www.php.net/");
exit;
?>
file2.php:
<?php
header('HTTP/1.1 303 See Other');
header("Location: http://www.php.net/");
exit;
?>
Expected result:
----------------
HTTP Response:
file1.php:
HTTP/1.1 201 Created
Location: http://www.php.net/
file2.php:
HTTP/1.1 303 See Other
Location: http://www.php.net/
Actual result:
--------------
HTTP Response:
file1.php:
HTTP/1.0 302 Found
Location: http://www.php.net/
file2.php:
HTTP/1.0 302 Found
Location: http://www.php.net/
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=47687&edit=1