go to bug id or search bugs for
The ZLib "inflate" stream filter appears to be broken in PHP 5.2.9 and 5.2.10. When trying to inflate a GZip file, or even a stream previously compressed with zlib.deflate, zlib.inflate returns no output.
// $ echo TEST TEST TEST | gzip | php zlibtest.php
$input = fopen("php://stdin", "rb");
stream_filter_append($input, 'zlib.inflate', STREAM_FILTER_READ);
while(!feof($input) && ($buffer = fread($input, 8192)) !== FALSE)
//Inexplicably, this will produce no output on STDOUT.
//Even the example at http://us3.php.net/filters.compression behaves incorrectly.
I expect to see "TEST TEST TEST" on the command line.
The zlib.inflate filter is clearly not producing decompressed results on fread() operations. By my reckoning, this is a problem.
Add a Patch
Add a Pull Request
Just tried the binary windows snapshot (5.2.11RC2-dev) and the problem still appears to be happening.
I'll build the latest snapshot on Linux and try there too...
I just built the latest snapshot on Linux and confirmed: this bug is still present on both Linux and Windows.
The examples don't work because someone (Sara) changed the window
parameter to default to -15 (to widen the range according to the commit
message) so in the example the deflate uses different params than the
There's also a real bug in this same code. GOTO is truly evil..
Let me know when you've got something ready to test, and I'll do so asap. :)
Well, I have a fix for the bug I found but it's actually not related to
your problem which is just invalid code. As mentioned on the manual page
you pointed to:
"Note: Compression filters do not generate headers and trailers used by
command line utilities such as gzip. They only compress and decompress
the payload portions of compressed data streams."
Hence, your example can not work. This is just documentation issue,
reclassifying. The invalid example code needs to be fixed. (to use -15
instead of 15 for window parameter :)
I see that. Hmm...
I assumed that my example would work because the bzip2.decompress filter appears to be compatible with the output of the bzip2 command line utility.
So, what would be the "correct" way to perform decompression on an already-opened file stream with GZip data coming in? Any thoughts?
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at
Params are already set in the example.