PHP: Вызов неопределенной функции gzdecode()


Я получаю странное сообщение об ошибке со следующим фрагментом кода 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

Тем не менее, когда я просматриваю документацию , мне не кажется, что мне нужно будет включать дополнительную библиотеку, или я ошибаюсь? Как я могу решить эту проблему?

ОБНОВЛЕНИЕ

Следуя другому вопросу , чтобы проверить независимо от того, установлена ли эта библиотека на моем компьютере, ответ - да, это так.

Из информации 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 
Author: Community, 2012-03-21

3 answers

Он не всегда устанавливается. Из документации:

Поддержка Zlib в PHP по умолчанию не включена. Вам нужно будет настроить PHP--with-zlib[=DIR]

Версия PHP для Windows имеет встроенную поддержку этого расширения. Вам не нужно загружать какие-либо дополнительные расширения, чтобы использовать эти функции.

Редактировать: Поскольку это все еще принятый ответ, я отредактировал его, чтобы добавить функцию, предложенную в качестве замены.

function gzdecode($data) { 
   return gzinflate(substr($data,10,-8)); 
} 
 4
Author: Waynn Lue, 2015-04-15 20:01:35

Gzdecode недоступен, если PHP не соответствует zlib. Согласно некоторым источникам, он, возможно, будет включен в PHP 6. Обратите внимание в руководстве, как почти все функции дали номер версии PHP, когда он стал/доступен. Как ни странно, они не считают, что это необходимо для отображения предупреждающего сообщения.

Попробуйте этот код (работает для меня) для gzdecode без контрольных сумм:

function gzdecode($data) 
{ 
   return gzinflate(substr($data,10,-8)); 
} 
 18
Author: user1122069, 2013-01-16 18:44:09

Функция gzdecode доступна с php 5.4enter image description here

Мое любимое решение -

Распаковать сжатый http-ответ gzip

 0
Author: caiofior, 2017-05-23 12:26:42