#26990 [Bgs->Opn]: PHP CGI does not handle Status header.

From: Date: Thu, 22 Jan 2004 03:54:29 +0000
Subject: #26990 [Bgs->Opn]: PHP CGI does not handle Status header.
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-53745@lists.php.net to get a copy of this message
ID: 26990 User updated by: progcom@php.net Reported By: progcom@php.net -Status: Bogus +Status: Open Bug Type: CGI related Operating System: FreeBSD 5.2 PHP Version: 4.3.4 New Comment: Yes, It works, but PHP manual also said: Note: In PHP 3, this only works when PHP is compiled as an Apache module. You can achieve the same effect using the Status header. <?php header("Status: 404 Not Found"); ?> It will be document problem? I don't know Apache's mod_cgi or other servers work with double 'Status' header, but I'm using PHP by FastCGI (mod_fcgi), It says: FastCGI: comm with server "/path/to/php" aborted: error parsing headers: duplicate header 'Status' I think PHP should follow CGI Spec., at least CGI version, isn't it? Previous Comments: ------------------------------------------------------------------------ [2004-01-21 19:24:50] sniper@php.net This works: <?php header('Location: http://example.org', 0, 303); ?> And next time, RTFM! ------------------------------------------------------------------------ [2004-01-21 16:13:38] progcom@php.net I tried lastest, but not fixed. (php4-STABLE-200401212030) Same result as 4.3.4. I found on main/SAPI.c, sapi_headers_op() controls header but there is no handles 'Status: xxx' header. Not fixed on CVS tree, also. ------------------------------------------------------------------------ [2004-01-21 14:36:21] sniper@php.net Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2004-01-21 06:58:33] progcom@php.net Description: ------------ CGI version PHP does not handle 'Status: xxx' header. By CGI 1.1 Spec, header('Status: xxx') can produce http response code. (I can use 'HTTP/1.0 xxx', but I think CGI version should work with 'Status: xxx') on http://hoohoo.ncsa.uiuc.edu/cgi/out.html , Status This is used to give the server an HTTP/1.0 status line to send to the client. The format is nnn xxxxx, where nnn is the 3-digit status code, and xxxxx is the reason string, such as "Forbidden". Reproduce code: --------------- <?php header('Status: 303 See Other'); header('Location: http://example.org'); ?> Expected result: ---------------- Status: 303 Content-type: text/html Location: http://example.org Actual result: -------------- Status: 302 Content-type: text/html Status: 303 See Other Location: http://example.org ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26990&edit=1

« previous php.bugs (#53745) next »