PHP:调用未定义的函数gzdecode()

时间:2012-03-21 09:38:46

标签: php function undefined

我收到一条奇怪的错误消息,上面有一段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信息:

enter image description here

所以这变得越来越令人困惑......

更新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 

3 个答案:

答案 0 :(得分:18)

除非PHP符合zlib,否则

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)

自php 5.4 enter image description here

以来,函数gzdecode可用

我最喜欢的解决方案是

Uncompress gzip compressed http response