最近我们迁移到了新服务器。 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,您将在主页中收到错误消息,但不会对操作产生影响。
任何关于可能的原因或如何收集更多信息的线索将非常感激。 感谢
答案 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)
我在drupal网站上遇到此问题,此线程中没有其他解决方案有帮助。经过一些故障排除后,我发现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
禁用压缩。