【发布时间】:2014-12-29 16:32:16
【问题描述】:
PHP 有自己的函数来处理 gzip 档案。我写了以下代码:
error_reporting(E_ALL);
$f = file_get_contents('http://spiderbites.nytimes.com/sitemaps/www.nytimes.com/sitemap.xml.gz');
echo $f;
$f = gzuncompress($f);
echo "<hr>";
echo $f;
First echo 通常输出带有正确标题的压缩文件(至少前两个字节是正确的)。如果我使用浏览器下载此文件,我可以轻松解压缩。
但是 gzuncompress 抛出了Warning: gzuncompress(): data error in /home/path/to/script.php on line 5
谁能指出我解决这个问题的正确方向?
编辑:
phpinfo() 输出部分
【问题讨论】:
-
您可以使用 ob_gzhandler() 让 PHP 为您完成工作,因为如果未压缩的数据超过压缩输入数据长度的 32768 倍,函数 gzuncompress() 将返回错误,或者超过可选参数长度。或者您可以使用可选参数来定义长度。这应该很容易解决。
-
@unixmiah 在我的情况下,文件大小为 4169(压缩)/88406(未压缩),因此该比率远非 32768(实际比率约为 21)。
-
您是否编辑了 php.ini 并启用了 zip 库?如果您还没有这样做,请在完成后重新启动您的网络服务器以进行您所做的更改。
-
@unixmiah 我包含了 phpinfo() 屏幕截图以明确这一点。正如我所看到的 - 一切都已启用。对吗?
-
@VladaKatlinskaya:看看马里奥的回答。