我收到一条奇怪的错误消息,上面有一段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);
}
}
我基本上是尝试从gzip压缩文件中加载文本内容。我收到以下错误:
Fatal error: Call to undefined function gzdecode() in ...\sites\MyScripts\fw2.php on line 80
然而,当我看一下documentation时,似乎我不需要包含额外的库,或者我错了?我该如何解决这个问题?
更新
在另一个question之后检查我的电脑上是否安装了这个库,答案是肯定的,是的。
来自PHP信息:
所以这变得越来越令人困惑......
更新II
我试过了:
<?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
答案 0 :(得分:18)
gzdecode不可用。根据一些消息来源,它可能包含在PHP 6中。请注意本手册中几乎所有函数在变为/可用时都给出了PHP版本号。奇怪的是,他们认为不需要显示警告信息。
对于没有校验和的gzdecode,请尝试使用此代码(适用于我):
function gzdecode($data)
{
return gzinflate(substr($data,10,-8));
}
答案 1 :(得分:4)
并不总是安装。来自the documentation:
默认情况下不启用PHP中的Zlib支持。您需要配置PHP --with-zlib [= DIR]
Windows版本的PHP内置支持此扩展。您无需加载任何其他扩展即可使用这些功能。
编辑:由于这仍然是已接受的答案,我编辑了它以添加建议替换的功能。
function gzdecode($data) {
return gzinflate(substr($data,10,-8));
}
答案 2 :(得分:0)