В документации phpmanual сказано:
Поддержка Zlib в PHP не включена по умолчанию. Вам нужно будет
настроить PHP —with-zlib [= DIR]Версия PHP для Windows имеет встроенную поддержку этого расширения.
Вам не нужно загружать какие-либо дополнительные расширения, чтобы использовать
эти функции.
Так как он говорит, что он должен быть включен по умолчанию только в версии PHP для Windows.
Но я установил PHP и Apache на свой Linux-компьютер из репозитория, а затем заметил, что он уже включен. Используются эти команды:
sudo apt-get install apache2
sudo apt-get install php5 php-pear
Означает ли это, что он также включен по умолчанию, если вы устанавливаете PHP из репозитория?
Также я пытался установить PHP из исходного кода без добавления --with-zlib[=DIR]
Конфигурация, просто чтобы проверить будет zlib
поддерживаться или нет. Согласно документации на phpmanual это не должно.
Я не специалист по компиляции, поэтому я нашел учебник по установке PHP из исходного кода, и я сделал следующие шаги:
apt-get install libxml2-dev
apt-get install build-essential
wget http://in1.php.net/distributions/php-5.3.28.tar.bz
tar -xvjf php-5.3.28.tar.bz
cd php-5.3.28
./configure --prefix /usr/local/php5
------ I configure it without --with-zlib[=DIR] ---------
make
make test
make install
и как последний я запускаю эту строку, чтобы она работала с Apache:
apt-get install libapache2-mod-php5
И после установки PHP таким способом поддержка ZLIB снова была включена по умолчанию.
Если вы спрашиваете себя, как я проверяю, включен он или нет, вот ответ.
Я проверяю это phpinfo();
и он всегда говорит, что включен:
А также я проверял несколько функций из этой библиотеки:
if(function_exists('gzdeflate'))
{
echo 'ZLIB is supported';
}
else
{
echo 'ZLIB is not supported';
}
//the result is always 'ZLIB is supported'
if(function_exists('gzencode'))
{
echo 'ZLIB is supported';
}
else
{
echo 'ZLIB is not supported';
}
//the result is always 'ZLIB is supported'
Я спрашиваю об этом, потому что у меня есть плагин WordPress. Так как плагин будет установлен на множество разных серверов.
Теперь я хочу начать с использованием функций gzinflate()
а также gzdeflate()
за одну новую функцию. Поэтому я провел исследование и некоторые тесты и был сбит с толку, потому что в документации сказано, что он не поддерживается по умолчанию, но когда я устанавливаю PHP на свой сервер, он всегда поддерживается по умолчанию.
Мне действительно нужно использовать эти функции, но я не хочу использовать их, если они не будут поддерживаться по крайней мере на 99% серверов клиентов.
Так что документация не так или я что-то упустил. Если я что-то упустил, вы можете помочь мне с альтернативными функциями сжатия, которые будут поддерживаться как минимум на 99% серверов.
Этот раздел документации представляется неверным. Насколько я могу судить, zlib
расширение всегда * было включено по умолчанию.
Хотя возможно, что это расширение не загружается в некоторых системах, это крайне редко. Вам не нужно добавлять обходные пути для его отсутствия — просто сформулируйте это как требование и двигайтесь дальше.
*: То есть обратно по крайней мере PHP 4.0.
Несколько дней назад я столкнулся со сценарием, в котором я сформулировал обратную проблему, как вы заявили. У aws linux ami, с которым я работал, была установка php без настроенного zlib, из-за которого я не получал пакет zlib.
Я должен переустановить php для нужного мне пакета, то есть —with-zlib [= DIR] (не рекомендуется, но я придерживался официального подхода)
Так что это не всегда доступно по умолчанию.
Надеюсь, это поможет.