在 IIS 中禁用单个 PHP 文件的 Gzip 压缩

3

我有一个不太常见的配置(使用IIS的PHP),因此迄今为止,由于这个原因,我无法找到解决我的问题的方法。

基本上,当我在php页面上发送手动404标头时:

header('HTTP/1.0 404 Not Found');

问题在于我总是遇到编码错误,我已经确定这与启用gzip有关。当我使用--compressed选项进行curl时,会出现以下情况:
HTTP/1.1 404 Not Found
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 3560
Content-Type: text/html
Content-Encoding: gzip
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/6.0
Set-Cookie: PHPSESSID=b0ueqhtc3o4p7m2luqss170fr3; path=/
Date: Mon, 11 Jul 2011 16:15:40 GMT

curl: (61) Error while processing content unencoding: invalid code lengths set

是否有可能只针对这一页禁用压缩?还是我错过了其他解决方案?我不想禁用整个站点的压缩。

1个回答

8
这很简单,只需使用ini set命令,如下所示:
<?php 
    if(ini_get('zlib.output_compression')){ 
        ini_set('zlib.output_compression', 'Off'); 
    }
    header('HTTP/1.0 404 Not Found');
?>

就是这么简单。

我的英雄!我看到很多东西说ini_set对于那个设置无效,我想我只是相信了它们而没有真正尝试过... - catbelly
NP,我很高兴它对你有用。在输出压缩方面,在Windows/PHP环境中,你会发现有很多东西遵循这种方式。有些东西在像你的1000个其他设置上运行良好,但在你的设置上不起作用,反之亦然,你只能使用试错法。在Windows IIS和PHP之间,有成千上万的配置可以禁用/启用甚至最基本的功能,并让你发疯。 - BrandonS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接