PHP 是否默认启用 ZLIB 支持?
Is ZLIB support in PHP enabled by default or NOT?
在php手册的文档中说:
Zlib support in PHP is not enabled by default. You will need to
configure PHP --with-zlib[=DIR]
The Windows version of PHP has built-in support for this extension.
You do not need to load any additional extensions in order to use
these functions.
所以正如它所说的那样,它应该只在 PHP 的 Windows 版本中默认启用。
但是我从存储库在我的 linux 机器上安装了 PHP 和 Apache,然后我注意到它已经启用了。使用了这些命令:
sudo apt-get install apache2
sudo apt-get install php5 php-pear
这是否意味着如果您从存储库安装 PHP,默认情况下也会启用?
我还尝试从源代码安装 PHP 而不添加 --with-zlib[=DIR]
配置,只是为了检查是否支持 zlib
。根据php手册上的文档,它不应该。
我不是编译专家,所以我找到了从源代码安装 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](不推荐,但这是我必须维护的官方方法)
所以默认情况下它并不总是可用。
希望对您有所帮助。
在php手册的文档中说:
Zlib support in PHP is not enabled by default. You will need to configure PHP --with-zlib[=DIR]
The Windows version of PHP has built-in support for this extension. You do not need to load any additional extensions in order to use these functions.
所以正如它所说的那样,它应该只在 PHP 的 Windows 版本中默认启用。
但是我从存储库在我的 linux 机器上安装了 PHP 和 Apache,然后我注意到它已经启用了。使用了这些命令:
sudo apt-get install apache2
sudo apt-get install php5 php-pear
这是否意味着如果您从存储库安装 PHP,默认情况下也会启用?
我还尝试从源代码安装 PHP 而不添加 --with-zlib[=DIR]
配置,只是为了检查是否支持 zlib
。根据php手册上的文档,它不应该。
我不是编译专家,所以我找到了从源代码安装 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](不推荐,但这是我必须维护的官方方法)
所以默认情况下它并不总是可用。 希望对您有所帮助。