101

最近我们迁移到了一个新的服务器。2天后,我遇到了以下问题

1)我们在会话表上发生了崩溃,我们很容易通过修复它来修复它

2)我们将OpenX作为我们的广告服务器运行,它也崩溃了,但是error.log中没有证据它让你登录,但是在查看dashboard.php的那一刻,我们得到:

Error 330 (net::ERR_CONTENT_DECODING_FAILED): (Google Chrome)

您尝试查看的页面无法显示,因为它使用了无效或不受支持的压缩形式。(火狐)


OpenX 在 PHP 上使用以下服务:

OpenX 要求: http ://www.openx.com/docs/2.8/adminguide/System%20requirements

OpenX 使用默认的 PHP 设置。但是,服务器管理员有时会更改这些设置。在安装 OpenX 之前,请检查以下设置是否正确:

magic_quotes_runtime 必须关闭 safe_mode 必须关闭 register_argc_argv 如果您想通过命令行运行维护,则必须打开 file_uploads 需要打开以允许 HTTP 文件上传 OpenX 需要以下 PHP 扩展:

扩展mysql名或pgsql. mysqli不支持扩展。ZLib 扩展,用于转换由Flash MX. FTP 扩展。如果这不存在,OpenX 将尝试模拟它,这可能是一个不太稳定的解决方案。

GD 扩展,用于在主页上生成图表。如果未启用扩展程序,您将无法在主页上查看图表或统计信息。要登录到主页,需要 openssl 扩展或启用 SSL 的 curl 扩展。如果未启用 SSL,您将在主页中收到错误消息,但不会影响操作。


任何有关可能原因或如何收集更多信息的线索将不胜感激。谢谢

4

16 回答 16

138

当您的 HTTP 请求的标头声称内容是 gzip 编码时会发生这种情况,但事实并非如此。关闭 gzip 编码设置或确保内容实际上已编码。

于 2012-12-26T12:02:21.420 回答
59

我启用zlib.output_compressionphp.ini它,它似乎为我解决了这个问题。

于 2015-02-26T14:33:00.063 回答
22

代码在录制时需要保存没有BOM的UTF8。有时,用(Notepad++)或其他编码工具编写代码并使用UTF8编码,会发生此错误。对不起,我不懂英语。这只是我的经验。

于 2013-10-02T23:04:12.083 回答
9

由于添加了输出缓冲模块扩展(ob_gzhandler)而导致此错误。在开始 ob_start() 和结束 ob_flush() 时使用输出缓冲

<?php   
    ob_start( 'ob_gzhandler' ); 
    echo json_encode($array);
    ob_end_flush();
?>

用这个:

<?php   
    ob_start(); 
    echo json_encode($array);
    ob_flush();
?>
于 2015-01-05T14:15:28.960 回答
6

如果您要使用Codeigniter框架,那么只需将其放入配置文件中:

$config['compress_output'] = FALSE;

php.ini配置文件中,使用:

zlib.output_compression=On
于 2016-12-23T07:37:11.520 回答
2

你使用这个ob_start(ob_gzhandler)功能吗?如果是这样并且如果您在ob_start(ob_gzhandler)函数上方输出任何内容,您将收到此错误。您可以不使用该功能,也可以不输出高于该功能的内容。回调函数将ob_gzhandler确定浏览器将接受哪种类型的内容编码,并将相应地返回其输出。因此,如果您在此函数上方输出内容,则内容的编码可能与输出内容不同ob_gzhandler,从而导致此错误。

于 2015-06-19T02:23:42.080 回答
2

其他人得到这个的另一个想法......

我有一些 gzipped svg,但它在输出中有一个 php 错误,这导致了这个错误消息。(因为 gzip 二进制文件中间有文本。)修复 php 错误解决了它。

于 2017-01-21T15:54:03.143 回答
2

在php.ini中启用 gzip 压缩:

zlib.output_compression = On

并将其添加到您的.htaccess文件中:

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>
于 2017-02-10T19:23:16.027 回答
2

如果有人仍在寻找这个可恨问题的原因,那么有一个解决方案可以确定导致文件的原因。https://www.drupal.org/node/1622904#comment-10768958来自Drupal社区。

我引用:

编辑

includes/bootstrap.inc:

功能drupal_load()。这是一个简短的功能。找到以下行: include_once DRUPAL_ROOT . '/' . $filename; 暂时将其替换为

ob_start();
include_once DRUPAL_ROOT . '/' . $filename;
$value = ob_get_contents();
ob_end_clean();
if ($value !== '') {
  $filename = check_plain($filename);
  $value = check_plain($value);
  print "File '$filename' produced unforgivable content: '$value'.";
  exit;
}
于 2016-11-09T13:30:43.433 回答
1

今天早上,当我意识到是什么导致了我的这个问题时,我有一点虚弱的时刻。

奇怪的是,该请求在 Firefox 和 Chrome 中都失败了,但是当我尝试通过 Fiddler Web Debugger 访问时,它工作了。

对我来说,问题是我在项目中的一个 PHP 文件中输入了错误的字符。直到我检查了 Git 对项目的更改,我才注意到这一点。

就我而言,我有:m<?php runMyProgram(); ?>

一旦我删除了 m,它又开始工作了。

于 2018-07-23T11:49:30.857 回答
1

就我而言,它是在向 IIS 添加一个需要使用 Apache 代理的新应用程序时发生的。

我需要设置ProxyHTMLEnable OnProxyHTMLEnable Off获取内容。(看起来大多数 js 代码都触发了错误,但这至少给了我一些工作的余地。)

IIS 正在发送页面内容Content-Encoding: gzip

<Proxy "http://192.168.1.1:81">
    ProxyHTMLEnable On   #> change this to Off
    ProxyHTMLURLMap  ...  ...
</Proxy>
于 2019-06-03T19:13:21.193 回答
1

我在一个站点上遇到了这个问题,这个线程中的其他解决方案都没有帮助。经过一些故障排除后,我发现 local.settings.php 有一个结束标记,后面有一个空格,如下所示:

<?php
$databases = array(
  'default' =>
  array (
    'default' =>
    array (
      'driver' => 'mysql',
      'database' => 'xxx',
      'username' => 'xxx',
      'password' => 'xxx',
      'port' => '',
      'host' => 'xxx',
    ),
  ),
);
?>
 

将 local.settings.php 更新为以下已解决:

<?php
$databases = array(
  'default' =>
  array (
    'default' =>
    array (
      'driver' => 'mysql',
      'database' => 'xxx',
      'username' => 'xxx',
      'password' => 'xxx',
      'port' => '',
      'host' => 'xxx',
    ),
  ),
);

结束 "?>" PHP 标记在这里不是必需的。如果您选择使用结束标记,则必须确保其后没有字符/空格。

于 2017-07-07T14:51:55.877 回答
0

在将系统升级到 Revive 时,我们也遇到了这个问题。开启 GZIP 后,我们发现问题仍然存在。经过进一步调查,我们发现升级后文件权限不正确。一个简单的递归 chmod 就可以了。

于 2014-06-19T21:50:39.703 回答
0

我在启用 PageSpeed 模块的情况下看到了这个错误。PageSpeed 模块有一个可以被 gzip 压缩的缓存。因此,显然可能发生的是内容被双重压缩。

为了重写资源,PageSpeed 必须在服务器端缓存它们。在 1.10.33.0 之前,这些资源一直未压缩存储。为了减少磁盘使用、减少服务器延迟、支持更高的压缩级别并提高服务器吞吐量,HTTPCache 可以在可压缩资源存储在缓存中时自动 gzip 压缩资源。要配置缓存压缩,请将 HttpCacheCompressionLevel 设置为 -1 和 9 之间的值,其中 0 表示关闭,-1 是 gzip 的默认压缩,9 是最大压缩。默认值为 9,最大压缩。

我通过将此行添加到我的 PageSpeed 配置来解决它:

HttpCacheCompressionLevel 0

禁用压缩。

于 2020-08-27T19:38:24.957 回答
0

有一个糟糕的 Java 错误会导致此问题: https ://bugs.java.com/view_bug.do?bug_id=JDK-8189789

于 2018-10-15T17:22:39.930 回答
0

一个更常见的答案是你有一些错误被附加到你的压缩中。解决方案是display_errors = Off在您的 php.ini 文件中进行设置(通过运行检查您的终端是否打开php --info并查找“display_errors”)

那应该这样做。而且,你如何发现你实际上是什么错误?每当您点击该路线/页面时,请检查您的 PHP 错误日志。

祝你好运!

于 2020-02-20T18:48:16.127 回答