【发布时间】:2015-06-04 03:55:26
【问题描述】:
在 phpmanual 的文档中说:
默认情况下未启用 PHP 中的 Zlib 支持。您将需要 配置 PHP --with-zlib[=DIR]
Windows 版本的 PHP 内置了对此扩展的支持。 您无需加载任何其他扩展即可使用 这些功能。
因此,正如它所说,它应该默认仅在 Windows 版本的 PHP 中启用。
但是我从存储库在我的 linux 机器上安装了 PHP 和 Apache,然后我注意到它已经启用。使用了这些命令:
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.h不可用时它才会不存在。
标签: php linux apache ubuntu zlib