错误330(net :: ERR_CONTENT_DECODING_FAILED):

时间:2012-12-26 11:14:41

标签: php openx

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

1)我们在会话表上遇到了崩溃,我们可以通过修复它来轻松修复

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

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

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


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生成的压缩Flash文件中的链接。 FTP扩展。如果不存在,OpenX将尝试模拟它,这可能是一个不太稳定的解决方案。

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


任何关于可能的原因或如何收集更多信息的线索将非常感激。 感谢

16 个答案:

答案 0 :(得分:122)

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

答案 1 :(得分:53)

我在zlib.output_compression启用了php.ini,它似乎解决了我的问题。

答案 2 :(得分:21)

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

答案 3 :(得分:5)

由于添加了输出缓冲模块扩展(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();
?>

答案 4 :(得分:4)

如果您要使用Codeigniter框架,那么只需将其转换为配置文件:

$config['compress_output'] = FALSE;

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

zlib.output_compression=On

答案 5 :(得分:2)

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

我引用:

编辑

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;
}

答案 6 :(得分: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>

答案 7 :(得分:1)

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

答案 8 :(得分:1)

其他任何人都有这个想法......

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

答案 9 :(得分: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',
    ),
  ),
);

结束&#34;?&gt;&#34;这里不需要PHP标记。如果您选择使用结束标记,则必须确保后面没有字符/空格。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

今天早晨,当我意识到是什么原因导致我出现这个问题时,我有一个虚假的时刻。

奇怪的是,该请求在Firefox和Chrome中均失败,但是在我尝试通过Fiddler Web调试器进行访问时有效。

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

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

一旦我删除了m,它就会重新开始工作。

答案 12 :(得分:0)

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

答案 13 :(得分:0)

就我而言,这是在将需要使用Apache代理的新应用程序添加到IIS时发生的。

我需要将ProxyHTMLEnable On设置为ProxyHTMLEnable Off才能获得内容。 (看来某些js代码大多数已触发了该错误,但这至少给了我一些有用的东西。)

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

<Proxy "http://192.168.1.1:81">
    ProxyHTMLEnable On   #> change this to Off
    ProxyHTMLURLMap  ...  ...
</Proxy>

答案 14 :(得分:0)

一个更常见的答案是,您在压缩时会附加一些错误。解决方案是在您的php.ini文件中设置display_errors = Off(通过运行php --info来检查终端是否处于开启状态,并查找“ display_errors”)

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

好人!

答案 15 :(得分:0)

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

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

我通过将以下行添加到我的PageSpeed配置中解决了该问题:

HttpCacheCompressionLevel 0

禁用压缩。