#48994 [Fbk->Opn]: zlib.output_compression does not ouput HTTP headers when set to a string value

From: Date: Tue, 21 Jul 2009 19:03:10 +0000
Subject: #48994 [Fbk->Opn]: zlib.output_compression does not ouput HTTP headers when set to a string value
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-140025@lists.php.net to get a copy of this message
ID: 48994 User updated by: jflatnes at vt dot edu Reported By: jflatnes at vt dot edu -Status: Feedback +Status: Open Bug Type: Zlib Related Operating System: Linux 2.6.29 PHP Version: 5.2.10 New Comment: <?php var_dump(ini_set('zlib.output_compression', 'On')); ?> Results in: string(0) "" (meaning I had no previous setting for zlib.output_compression, I believe) --- I am coming to understand that the string 'On' doesn't behave the same way in ini_set as in an ini file, as mentioned. The issue I see here is that there are two options for zlib compression: zlib.output_compression = false: no compression with no headers. zlib.output_compression = true: compression with appropriate headers. Passing a string to ini_set (other than the string '1') causes a third, undocumented behavior: zlib.output_compression = 'On': compression without the headers. Those three states describe the behavior I'm seeing, and the third state seems like a bug. If 'On' is an invalid setting, shouldn't the compression simply not be activated? Am I thinking about this correctly? Previous Comments: ------------------------------------------------------------------------ [2009-07-21 18:46:33] jani@php.net Try this too: <?php var_dump(ini_set('zlib.output_compression', 'On')); ?> Also note that using "On" or "Off" or such with ini_set() does NOT work like they do when used in php.ini. ------------------------------------------------------------------------ [2009-07-21 02:48:18] jflatnes at vt dot edu Description: ------------ When the configuration option 'zlib.output_compression' is set to a boolean value, output is compressed and the appropriate HTTP headers are sent. When the option is set to a string like 'true' or 'On', the output is compressed, but no headers are sent, causing browsers to fail to interpret the output as compressed. Reproduce code: --------------- <?php ini_set('zlib.output_compression', 'On'); echo 'hello, world'; ?> Expected result: ---------------- The output "hello, world" to be gzip/deflate compressed as appropriate for Accept-Encoding, and the Content-Encoding and Vary HTTP headers to be set. Actual result: -------------- Instead, the output is indeed gzip-compressed, but the Content-Encoding and Vary headers are not set. The actual text that the browser prints is: ‹&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;ÊHÍÉÉ×Q(Ï/ÊI&#65533;&#65533;&#65533;ÿÿ&#65533;:r«ÿ &#65533;&#65533;&#65533; Note, this works correctly with the an ini_set argument of the boolean value true. The documentation claims that ini_set should take string arguments, though. Even if a boolean/integer is required to activate output compression, the behavior should either be "all on" or "all off". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48994&edit=1

« previous php.bugs (#140025) next »