php - CodeIgniter "content encoding error"

标签 php apache codeigniter encoding

是否有人知道如何在 CodeIgniter 中使用 $config['compress_output'] = true 找到导致此“内容编码错误”的泄漏点?

我已经尝试调试这个错误好几天了,但我似乎无法找到泄漏的位置。 LogLevel 位于 debug 但发生此错误时我在日志中看不到任何信息。

那么,有什么想法可以调试这个吗?

更新

我真的不想禁用 compress_output 功能,我只想看看如何追踪错误产生的位置

更新2

我一遍又一遍地查看 Controller 中是否有任何输出......但没有,所以肯定是在其他地方引发了错误。没有模型/数据库,只有 Controller 、库、助手和 View

最佳答案

这个问题是输出缓冲开始的地方。 config 变量的检查位于 _display()system/core/Output.php 中。它在大量代码已经运行后启动 gzipped 缓冲。这使得输出有可能在缓冲开始之前发生。

compress_output 设置为 false 没关系,因为没有任何内容被编码。将其设置为 true 您最终会得到混合内容。有些输出是编码的,有些不是,这会导致压缩错误。

有两种解决方案:

1) 您可以将 compress_output 设置为 false 并将 ob_start('ob_gzhandler'); 添加到 index.php 文件的顶部。这将确保所有输出始终被压缩,包括错误。

2)另一种解决方法是在system/Output.php中的ob_start('ob_gzhandler');之前添加ob_flush(); .这将在没有错误时输出 gzip 并在有错误时为您提供未编码的内容。

我认为 2 是更好的解决方案,应该由 CodeIgniter 团队实现。但是,如果您不想弄乱系统代码(升级时更改会消失),那么 1 对您来说是更好的解决方案。

关于php - CodeIgniter "content encoding error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10971191/

相关文章:

php - 读取文件时使用 2 的幂有优势吗

linux - 漂亮的 URL - mod_rewrite 问题

php - CodeIgniter:创建新的助手?

Codeigniter:执行 $this->db->last_query();执行查询?

PHP - 来自命令行的服务器名称

javascript - 停止在 PHP AJAX MySQL 中重复 div 内容

php - 使用 php 创建 javascript 数组以从目录中获取图像

php - Apache PHP 项目根处理程序/前端 Controller 模式

php - Apache 服务器上的 500 错误 - "AllowOverride not allowed here"

PHP fatal error : Failure in wincache (windows azure)