默认情况下是否启用了PHP中的ZLIB支持?

时间:2015-03-30 23:16:55

标签: php linux apache ubuntu zlib

在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();,它总是说它已启用:

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%的服务器都支持这些功能。

2 个答案:

答案 0 :(得分:3)

本文档的这一部分似乎不正确。据我所知,默认情况下zlib扩展程序始终处于启用状态。

虽然某些系统上可能没有加载此扩展,但这种情况极为罕见。您不需要为其缺席添加变通方法 - 只需将其作为要求说明并继续。

*:也就是说,回到至少 PHP 4.0。

答案 1 :(得分:0)

在几天前我遇到了一个场景,我在那里产生了你所说的反向问题。我正在使用的aws linux ami有一个没有配置zlib的php安装,因为我没有得到zlib包。

我必须为我想要的软件包重新安装php,即--with-zlib [= DIR](不推荐,但这是我必须维护的官方方法)

因此默认情况下并不总是可用。 希望有所帮助。