ID:               47687
 User updated by:  make dot fire at gmail dot com
 Reported By:      make dot fire at gmail dot com
 Status:           Open
 Bug Type:         HTTP related
-Operating System: windows server vista
+Operating System: windows vista
 PHP Version:      5.3CVS-2009-03-17 (snap)
 New Comment:

when use this test code:
test.php:
<?php
header("Location: http://www.php.net/";);
exit;
?>

use broswer to visit http://localhost/test.php, the status line in
response is:

HTTP/1.1 302 Redirect

and use php-cgi.exe under commend line get:

D:\project\www>php-cgi ./test.php
Status: 302 Moved Temporarily
Location: http://www.php.net/
Content-type: text/html; charset=utf-8


Previous Comments:
------------------------------------------------------------------------

[2009-03-17 14:13:28] make dot fire at gmail dot com

When run php-cgi.exe in command line, the result is expected:

D:\project\www>php-cgi ./test.php
Status: 303 See Other
Location: http://www.php.net/
Content-type: text/html; charset=utf-8


test.php:
<?php
header('HTTP/1.1 303 See Other');
header("Location: http://www.php.net/";);
exit;
?>

but visit same file throuth browser and webserver (use
http://localhost/test.php) will get 302 status code.

------------------------------------------------------------------------

[2009-03-17 13:56:28] make dot fire at gmail dot com

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

------------------------------------------------------------------------

[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