我收到一条奇怪的错误消息,其中包含以下 PHP 代码(我不是 PHP 专家):
if ( $file_loc != NULL ) {
if ( file_exists($file_loc) ) {
printf(" file exists");
$handle = fopen($file_loc, "rb");
$contents = fread($handle, filesize($file_loc));
fclose($handle);
$result = gzdecode($contents);
}
}
我基本上试图从 gzipped 文件加载文本内容。我收到以下错误:
Fatal error: Call to undefined function gzdecode() in ...\sites\MyScripts\fw2.php on line 80
然而,当我查看 documentation 时,我似乎不需要包含额外的库,还是我错了?我该如何解决这个问题?
更新
关注另一个question检查我的电脑上是否安装了这个库,答案是肯定的。
来自 PHP 信息:
所以这变得越来越令人困惑......
更新二
我已经尝试过:
<?php
echo phpversion().", ";
if (function_exists("gzdecode")) {
echo "gzdecode OK, ";
} else {
echo "gzdecode no OK, ";
}
if (extension_loaded('zlib')) {
echo "zlib extension loaded ";
} else {
echo "zlib extension not loaded ";
}
?>
我得到:
5.2.17, gzdecode no OK, zlib extension loaded
最佳答案
除非 PHP 兼容 zlib,否则 gzdecode 不可用。据一些消息来源称,它可能会包含在 PHP 6 中。请注意手册中几乎所有函数在 PHP 可用时都给出了 PHP 版本号。奇怪的是,他们认为不需要显示警告消息。
尝试使用此代码(对我有用)进行不带校验和的 gzdecode:
function gzdecode($data)
{
return gzinflate(substr($data,10,-8));
}
关于PHP:调用未定义的函数 gzdecode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801908/