ID: 16458 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Analyzed Bug Type: HTTP related Operating System: Win32 (XP) PHP Version: 4.1.1 New Comment:
Note: the replace parameter seems to be completely ignored; it replaces the headers as an Apache module anyway, and it refuses to replace them as CGI. Previous Comments: ------------------------------------------------------------------------ [2002-04-05 15:06:37] [EMAIL PROTECTED] OK, to be more verbose: I experienced the same problem with the CGI version of PHP 4.1.2 on Linux, but the problem didn't show up with the Apache-module of 4.3.0-dev. I've just recompiled 4.2.0RC2 as CGI, and the bug reappeared. So it's a CGI only bug. Reopened (and reclassifed). Anyway, PHP 4.2.0 is scheduled for release at the 22th of April. ------------------------------------------------------------------------ [2002-04-05 14:13:22] [EMAIL PROTECTED] Just checked the 4.2.0-RC2 and found the identical behaviour from the command line (with PHP.EXE, no headers are displayed, so I used PHP-CGI.exe). ------------------------------------------------------------------------ [2002-04-05 13:50:47] [EMAIL PROTECTED] If this bug doesn't exist with the Linux/Apache module it is ok for me - if it is this doesn't "work for me" at all... Reason: my application framework uses output buffering so headers don't get sent until ob_end_flush() is called. Especially any caching headers are /modified/ depending on results of the application computations. So it is not quite "easy" to "code around this 'bug'" - the caching headers are pre-set as soon as a session is established, and are not modifyable afterwards. In fact this 'bug' disables me to sent pages being cacheable, increasing server load and network traffic. And, with NetScape 4.x clients, pages resulting from posted forms cannot be resized (NS 4.x wants to resend the POST data to redraw the non-cacheable data). Any idea when 4.2.0 will be out as production version? On our production servers I cannot use an RC or -dev version, I need the stable build, so I have 4.1.2/RedHat Linux running there (cannot crosscheck the problem on the server just now). ------------------------------------------------------------------------ [2002-04-05 13:37:09] [EMAIL PROTECTED] Reproduced with 4.1.2, but it works fine for me with 4.3.0-dev. You might want to try 4.2.0RC2 from www.php.net/~derick . Anyway, it should be easy to code around this 'bug'. ------------------------------------------------------------------------ [2002-04-05 13:29:24] [EMAIL PROTECTED] >From the docs: The optional "replace" parameter indicates whether the header should replace a previous similar header, or add a second header of the same type. By default it will replace, but if you pass in FALSE as the second argument you can force multiple headers of the same type. At least with PHP 4.1.1/Win32(XP), this is NOT true - headers are always added up. Using this little test: <?php header('X-Test-Header: Version 1'); header('X-Test-Header: Version 2'); ?> this output is created: ------------------------------------- php headers.php X-Powered-By: PHP/4.1.1 X-Test-Header: Version 1 X-Test-Header: Version 2 Content-type: text/html ------------------------------------- According to the docs, only "Version 2" of the header should be sent. The results are identical if you do not provide the "replace" parameter, or if you set it to true or false. This is a very annoying bug, and for my application I'd rate it "critical". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16458&edit=1