Apache mod deflate不会压缩php输出

我已经启动了mod_deflate。 我可以在我的apache服务器中引入一个something.txt文件,并使用curl来检查它。

curl –compressed -I /somefile.txt给我回以下这是好的和压缩:

Vary: Accept-Encoding Content-Encoding: gzip 

但是,如果我使用/some.php我回来:

 Accept-Ranges: bytes X-Powered-By: PHP/5.4.4-14+deb7u5 

但没有内容编码:gzip,我使用了多个选项的.htaccess:

 SetOutPutFilter DEFLATE 

要么

 AddOutputFilterByType DEFLATE application/json 

我还检查了是否在php.ini中closures了zlib压缩,并尝试将输出缓冲区设置为closures。 但是不pipe我怎样尝试,我从来没有得到由apache压缩的php输出。 从Apache到zip压缩的开销比当我使用php zlib时less。

我看到足够的post,如Apache的输出压缩工作的CSS / JS,但不是PHP,但它使压缩从PHP。 我想要Apache来处理它。

我必须在这里错过一些愚蠢的东西。

更新:我解决了所有问题,也因为给出的答案。 最后它仍然没有100%的工作。 这是由于安装了错误的软件包。 apache2filter被用来发送错误的path。

AddOutputFilterByType是在输出filter链上添加事物的不赞成使用的方式( 参考这里 ):

还有一个指令AddOutputFilterByType仍然受支持,但可能有问题,现在已被弃用。 改用dynamicconfiguration。

而且您可能会遇到一些问题,因为PHP与一个不包含DEFLATEfilter的filter链相关联。

你可以尝试在FilterChain中使用mod_filter的新语法(在问题中,而不是在答案中)。

我有这个问题,最终发现设置.htaccess中的mod_deflate选项与httpd.conf导致不同的结果。 在fastcgi或DSO中运行时,httpd.conf设置适用于PHP。 在.htaccess文件中,作为fastcgi运行的PHP无法使用deflate指令。

所以试着在你的httpd.conf文件中写下规则,而不是使用.htaccess,看看是否能解决你的问题(别忘了在修改之后重新启动你的Apache)。

试试这个,看看它是否适合你:

 AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp