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] j...@php.net

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

Reply via email to