ID: 47687 Updated by: dmi...@php.net Reported By: make dot fire at gmail dot com -Status: Open +Status: Feedback Bug Type: HTTP related Operating System: windows vista PHP Version: 5.3CVS-2009-03-17 (snap) New Comment:
The issue is probably caused by fastcgi module of web server. The PHP sends proper headers, but it looks like fastcgi module sets status to 302 in case it finds "Location" header. Previous Comments: ------------------------------------------------------------------------ [2009-03-18 02:16:40] make dot fire at gmail dot com I have tried using PHP 5.2 (5.2.10-dev), both VC6 x86 Non Thread Safe (2009-Mar-18 00:00:00) and VC6 x86 Thread Safe (2009-Mar-18 00:00:00). And have tried on windows vista and windows server 2008, got the same results: test code: code1: <?php header('HTTP/1.1 303 See Other'); header("Location: http://www.php.net/"); exit; ?> code2: <?php header('HTTP/1.1 303 See Other'); exit; ?> code3: <?php header("Location: http://www.php.net/"); exit; ?> the problem only occurs when run php in fastCGI mode(using php-cgi.exe). code1 produce status line: HTTP/1.1 302 Redirect (expected: HTTP/1.1 303 See Other) code2 porduct status line: HTTP/1.1 303 See Other (expected: HTTP/1.1 303 See Other) code3 product status line: HTTP/1.1 302 Redirect (expected: HTTP/1.1 302 Moved Temporarily) when run php in ISAPI mode(using php5isapi.dll) or run php-cgi.exe under commend line, both test codes will produce expected result. it seems that something wrong with header("Location: ") with CGI mode... ------------------------------------------------------------------------ [2009-03-17 21:11:42] j...@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://windows.php.net/snapshots/ ------------------------------------------------------------------------ [2009-03-17 14:30:46] make dot fire at gmail dot com If change to ISAPI mode(use php5isapi.dll), the result is expected. <?php header('HTTP/1.1 303 See Other'); header("Location: http://www.php.net/"); exit; ?> will got status line: HTTP/1.1 303 See Other ------------------------------------------------------------------------ [2009-03-17 14:24:29] make dot fire at gmail dot com 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 ------------------------------------------------------------------------ [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. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/47687 -- Edit this bug report at http://bugs.php.net/?id=47687&edit=1