为什么ob_start('ob_gzhandler')打破了这个网站?

时间:2011-03-26 10:43:31

标签: php content-encoding

如果存在ob_start('ob_gzhandler'),我的网站会在浏览器中抛出内容编码错误。如果我删除该语句,它运行正常。

  • 该网站运行与许多其他网站相同的框架,服务器和托管包。无论声明是否在那里,它们都有效。
  • 语句在框架中,而不是应用程序代码,因此它由所有站点共享。
  • 工作地点与非工作地点之间的配置没有区别。
  • 网站在本地运行正常,使用完全相同的代码和数据。
  • 您可以使用curl / wget获取网站,并且返回的HTML会在浏览器中呈现。
  • 响应标题完全相同,没有声明。

我现在已经删除了远程服务器上的所有代码,并重新上传了所有内容。仍然没有变化。 下一步是重新安装网站,并从头开始,但我不想丢失所有数据。

任何指针,建议或解决方案?

3 个答案:

答案 0 :(得分:3)

通常我会在下面做,它对我有用,试一试

在您开始ob_end_clean();

的页面底部写下ob_flush();ob_start();

参考文献:

ob_end_clean();

ob_flush();

答案 1 :(得分:2)

只需将这行代码放入启动状态,一切就会好起来。

while (ob_get_level() > 0) { ob_end_clean() ; } 

答案 2 :(得分:1)

如果你已经在使用Apache的gzip压缩(从你的外观来看,因为我已经看到CSS / JS被压缩了),那么使用ob_start('ob_gzhandler')将压缩该压缩。 。浏览器将无法处理它。

我当然正在纠正当然,因为我总是使用Apache为我做这件事,但看起来你是双重抓取事情,这就是为什么它没有“ob_gzhandler”声明的原因。

检查其他网站上的.htaccess文件,并将其与您运行的网站进行比较,该网站存在同样的问题,因为我无法看到您在zacoders.net和jadeit.co.za上运行Drupal,只是在jadeit.co.za上,这让我觉得它们和你说的不一样? 耸肩