Я получаю странное сообщение об ошибке со следующим фрагментом 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
Тем не менее, когда я смотрю документацию , мне кажется, что мне не нужно включать дополнительную библиотеку, или я ошибаюсь? Как я могу решить эту проблему?
ОБНОВИТЬ
Следуя еще одному вопросу, чтобы проверить, установлена ли эта библиотека на моем ПК, да, это так.
Из информации 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
Он не всегда установлен. Из документации :
Поддержка Zlib в PHP не включена по умолчанию. Вам нужно будет настроить PHP -with-zlib [= DIR]
Версия PHP для Windows имеет встроенную поддержку этого расширения. Вам не нужно загружать дополнительные расширения, чтобы использовать эти функции.
edit: Поскольку это уже принятый ответ, я отредактировал его, чтобы добавить функцию, предложенную в качестве замены.
function gzdecode($data) { return gzinflate(substr($data,10,-8)); }
gzdecode недоступен, если PHP не соответствует zlib. По некоторым данным, он будет включен в PHP 6. Обратите внимание на то, как почти все функции предоставили номер версии PHP, когда он стал / доступен. Как ни странно, они не считают необходимым отображать предупреждающее сообщение.
Попробуйте этот код (работает для меня) для gzdecode без контрольных сумм:
function gzdecode($data) { return gzinflate(substr($data,10,-8)); }
Функция gzdecode доступна с php 5.4
Мое любимое решение
Uncompress gzip сжатый HTTP-ответ