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

Jér*_*nge 12 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我基本上是尝试从gzip压缩文件中加载文本内容.我收到以下错误:

Fatal error: Call to undefined function gzdecode() in ...\sites\MyScripts\fw2.php on line 80
Run Code Online (Sandbox Code Playgroud)

然而,当我看一下文档时,似乎我不需要包含额外的库,或者我错了?我该如何解决这个问题?

UPDATE

接下来的问题是检查我的电脑上是否安装了这个库,答案是肯定的,确实如此.

来自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 ";
}

?>
Run Code Online (Sandbox Code Playgroud)

我得到:

5.2.17, gzdecode no OK, zlib extension loaded 
Run Code Online (Sandbox Code Playgroud)

use*_*069 18

除非PHP符合zlib,否则gzdecode不可用.根据一些消息来源,它可能包含在PHP 6中.请注意本手册中几乎所有函数在变为/可用时都给出了PHP版本号.奇怪的是,他们认为不需要显示警告信息.

对没有校验和的gzdecode尝试此代码(适用于我):

function gzdecode($data) 
{ 
   return gzinflate(substr($data,10,-8)); 
} 
Run Code Online (Sandbox Code Playgroud)


Way*_*Lue 5

它并不总是安装。从文档

默认情况下未启用 PHP 中的 Zlib 支持。您将需要配置 PHP --with-zlib[=DIR]

PHP 的 Windows 版本内置了对此扩展的支持。您无需加载任何其他扩展即可使用这些功能。

编辑:由于这仍然是公认的答案,我对其进行了编辑以添加建议作为替代的功能。

function gzdecode($data) { 
   return gzinflate(substr($data,10,-8)); 
} 
Run Code Online (Sandbox Code Playgroud)

  • @WaynnLue 一个 10 年前的错误报告,以及一个 6 年前关于 PHP6 的评论并不是一个很好的参考。 (2认同)