PHP: вызов функции undefined 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);
}
}
В основном я пытаюсь загрузить текстовый контент из gzip файла. Я получаю следующую ошибку:
Fatal error: Call to undefined function gzdecode() in ...\sites\MyScripts\fw2.php on line 80
Тем не менее, когда я смотрю документация, мне кажется, что мне не нужно включать дополнительную библиотеку, или я ошибочно? Как я могу решить эту проблему?
UPDATE
Следуя 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
Ответы
Ответ 1
Он не всегда устанавливается. Из документация:
Поддержка Zlib в PHP не включена по умолчанию. Вам нужно будет настроить PHP --with-zlib [= DIR]
В версии Windows для PHP есть встроенная поддержка этого расширения. Вам не нужно загружать дополнительные расширения, чтобы использовать эти функции.
edit: Поскольку это уже принятый ответ, я отредактировал его, чтобы добавить функцию, предложенную в качестве замены.
function gzdecode($data) {
return gzinflate(substr($data,10,-8));
}
Ответ 2
gzdecode недоступен, если PHP не соответствует zlib. По некоторым данным, он будет включен в PHP 6. Обратите внимание на то, как почти все функции предоставили номер версии PHP, когда он стал/доступен. Как ни странно, они не считают необходимым отображать предупреждающее сообщение.
Попробуйте этот код (работает для меня) для gzdecode без контрольных сумм:
function gzdecode($data)
{
return gzinflate(substr($data,10,-8));
}
Ответ 3
Функция gzdecode доступна с php 5.4 ![введите описание изображения здесь]()
Мое любимое решение
Раскройте сжатый HTTP-запрос gzip