一尘不染

解压缩gzip压缩的HTTP响应

php

我正在使用php的file_get_contents()功能来执行HTTP请求。为了节省带宽,我决定使用添加"Accept-Encoding: gzip"标题stream_context_create()

显然,file_get_contents()输出一个gzip编码的字符串,所以我gzuncompress()用来解码该编码的字符串,但是将作为参数传递的数据出错。

[...] PHP Warning: gzuncompress(): data error in /path/to/phpscript.php on line 26

我知道还有另一个功能可以解压缩压缩后的数据,gzdecode()但是它不包含在我的PHP版本中(也许仅在SVN上可用)。

我知道cUrl可以即时解码gzip流(没有任何问题),但是有人建议我使用它file_get_contents()而不是cUrl。

您是否知道以其他方式解压缩PHP中压缩的数据,或为什么gzuncompress()输出警告?荒谬的是gzuncompress()没有按预期工作。

注意:问题当然与PHP有关:HTTP请求是对Tumblr API发出的,它给出了编码正确的响应。


阅读 686

收藏
2020-05-29

共1个答案

一尘不染

gzuncompress不适用于gzip编码。这是.Z档案的解压缩功能。

手册列出了缺少的gzdecode()#82930的一些解决方法,或者仅使用from中的一种upgradephp或gzopen temp文件的解决方法。

另一种选择是强制deflate使用Accept- Encoding:标头进行编码,然后gzinflate()用于解压缩。

2020-05-29