2015-03-30 3 views
3

В документации phpmanual говорится:Поддерживается ли поддержка ZLIB в PHP по умолчанию или НЕ?

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

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

Так как он говорит, что он должен быть включен по умолчанию только в версии 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(); и он всегда говорит, что он включен:

enter image description here

А также я проверялся несколько функций из этой библиотеки:

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% серверов.

+0

Вы не можете гарантировать, что он будет там, нет, но это очень распространено. Если вам это нужно, у вас нет выбора в любом случае, да? – Brad

+0

Он сводится к «включенному по умолчанию», это не то же самое, что «всегда встроенный». На практике это будет отсутствовать, если 'zlib.h' недоступен во время компиляции. – mario

ответ

3

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

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

*: То есть, до не менее PHP 4.0.

0

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

Я должен заново установить PHP для пакета я хотел то --with-Zlib [= DIR] (не рекомендуется, но был официальный подход, который я должен поддерживать)

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

Смежные вопросы