php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #60761 zlib.output_compression fails on refresh
Submitted: 2012-01-15 12:37 UTC Modified: 2012-05-15 07:47 UTC
Votes:4
Avg. Score:3.8 ± 1.3
Reproduced:4 of 4 (100.0%)
Same Version:3 (75.0%)
Same OS:1 (25.0%)
From: valentiny510 at yahoo dot es Assigned: mike
Status: Closed Package: *Compression related
PHP Version: 5.4.0RC5 OS: xp
Private report: No CVE-ID:
 [2012-01-15 12:37 UTC] valentiny510 at yahoo dot es
Description:
------------
Trying to compress the output with
zlib.output_compression = On
zlib.output_compression_level = 9

it seems its working only the first time when the page is accessed. When I refresh the page it restores the original size.

If I restart the Apache server, the firebug shows the compressed size only the first time, but if you refresh the page the size change to original again.

One little test was made with phpinfo( ), and tested 100 times..

Test script:
---------------
<?php phpinfo( ); ?>

Expected result:
----------------
The size of the page 10,6 KB (10.852 bytes) (every time)

Actual result:
--------------
The size of the page 10,6 KB (10.852 bytes) (only first time)
The size of the page 66,75 KB (68.353 bytes) (after refresh)


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-01-17 10:38 UTC] mike@php.net
-Status: Open +Status: Feedback -Assigned To: +Assigned To: mike
 [2012-01-17 10:38 UTC] mike@php.net
Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.


Works fine here, tried with 5.4 and trunk (TS, debug) as mod_php on Apache 2.2.21 
worker.

Pierre, could you verify? ... just because the reporter apparently uses Widnows 
XP.
 [2012-03-16 09:28 UTC] mike@php.net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.


 [2012-03-16 09:28 UTC] mike@php.net
-Status: Feedback +Status: No Feedback
 [2012-03-27 16:26 UTC] ab@php.net
Automatic comment on behalf of ab
Revision: http://git.php.net/?p=php-src.git;a=commit;h=bcfcfb2fc5f358ebfdc76a773b20b3fc056b20c0
Log: Fix bug #61519	test fails, should pass - ext/zlib/tests/bug60761.phpt
 [2012-03-29 04:23 UTC] ab@php.net
Automatic comment on behalf of ab
Revision: http://git.php.net/?p=php-src.git;a=commit;h=bcfcfb2fc5f358ebfdc76a773b20b3fc056b20c0
Log: Fix bug #61519	test fails, should pass - ext/zlib/tests/bug60761.phpt
 [2012-04-09 12:50 UTC] pajoye@php.net
-Status: No Feedback +Status: Assigned -Assigned To: mike +Assigned To: mattficken
 [2012-04-09 12:50 UTC] pajoye@php.net
Matt, please take a look at this bug.
 [2012-04-14 23:56 UTC] adunar at gmail dot com
I am experiencing the same problem, using PHP 5.4.0 with the PHP-FPM 
SAPI on Ubuntu.

zlib appears to only compress the output for the first request from 
a particular worker process.

With the default settings it takes a few refreshes to run into the bug. 
To reproduce immediately, set pm.start_servers = 1 in php-fpm.conf.

Afterwards, running "/etc/init.d/php5-fpm reload" allows another 
request to be compressed before it stops working again.
 [2012-04-15 02:27 UTC] adunar at gmail dot com
The bug also happens with the cli-server SAPI (both Windows and Ubuntu).

Here are a few (bash) commands that will reproduce this bug (assumes zlib.output_compression = On in your php.ini)

echo "<?php echo '-------------------------------';" > bug.php

php -S 127.0.0.1:8888 > /dev/null 2>&1 &

curl --header "Accept-Encoding: gzip" http://localhost:8888/bug.php 2> /dev/null | wc -m

curl --header "Accept-Encoding: gzip" http://localhost:8888/bug.php 2> /dev/null | wc -m

# fg, then ctrl+c to kill php -S

If output_compression is working correctly, the two curl commands should print the same number (approx. 16). 

However with PHP 5.4, the second (and subsequent) curl commands print the size of the original uncompressed output (31).
 [2012-05-12 13:42 UTC] pierre at archlinux dot de
I can still reproduce this bug on Arch Linux using PHP 5.4.3 (php-fpm). Which additional information do you guys need? It seems pretty obvious to me.
 [2012-05-15 07:45 UTC] mike@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src.git;a=commit;h=0ad53bfd7da12a92a46c08e3fff579a15026b88b
Log: fix bug #60761 zlib.output_compression fails on refresh
 [2012-05-15 07:47 UTC] mike@php.net
-Status: Assigned +Status: Closed -Assigned To: mattficken +Assigned To: mike
 [2012-05-15 07:47 UTC] mike@php.net
Should be fixed in 5.4 and master.
 [2012-05-20 06:42 UTC] pierre at archlinux dot de
I just tested this with 5.4.4RC1. While output compression is now on for more than just one request, there is another drawback: I have several pools defined via fpm. One of them has "php_flag[zlib.output_compression] = on".

Once the vhost using this pool is accessed output compression is turned on for all fpm pool and cannot be turned off. Even worse: ini_get('zlib.output_compression') still reports false.

If you then use the ob_gzhandler you get "output handler 'ob_gzhandler' conflicts with 'zlib output compression'"
 [2012-05-22 02:11 UTC] asad at sadsa dot pl
What i can say i use now Apache compression !!
 [2012-06-11 22:43 UTC] php at pointpro dot nl
This issue remains on ArchLinux running: PHP 5.4.3 (built: May 31 2012 10:40:02).

Because bug #55544 remains, I'm trying to use zlib.output_compression instead of ob_gzhandler. Alas, it still doesn't work. At some occasions, usually the first after a restart of the server, the output is correctly compressed. More often than not, however, the output is sent uncompressed to the client.

The steps to reproduce mentioned below by adunar at gmail dot com still reproduce this problem at this server. First time: compressed, subsequent times: uncompressed.

If more information is required, please let me know which. PHP is not giving any errors (I set error_reporting to E_ALL), but just does not compress the output.
 [2012-06-22 13:34 UTC] ewal at pointpro dot nl
In version php-5.4.4-1 it is now fixed, seems to work after a number of refreshes.
 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Fri Apr 18 13:02:15 2014 UTC