Linux — поддержка ZLIB в PHP включена по умолчанию или нет?

В документации 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% серверов.

3

Решение

Этот раздел документации представляется неверным. Насколько я могу судить, zlib расширение всегда * было включено по умолчанию.

Хотя возможно, что это расширение не загружается в некоторых системах, это крайне редко. Вам не нужно добавлять обходные пути для его отсутствия — просто сформулируйте это как требование и двигайтесь дальше.

*: То есть обратно по крайней мере PHP 4.0.

3

Другие решения

Несколько дней назад я столкнулся со сценарием, в котором я сформулировал обратную проблему, как вы заявили. У aws linux ami, с которым я работал, была установка php без настроенного zlib, из-за которого я не получал пакет zlib.

Я должен переустановить php для нужного мне пакета, то есть —with-zlib [= DIR] (не рекомендуется, но я придерживался официального подхода)

Так что это не всегда доступно по умолчанию.
Надеюсь, это поможет.

0

По вопросам рекламы [email protected]