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 vista
 PHP Version:      5.3CVS-2009-03-17 (snap)
 New Comment:

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...


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

[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.

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

[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

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

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

Reply via email to