PHP致命错误:调用成员函数append_output()

PHP致命错误:调用成员函数append_output(),php,codeigniter,Php,Codeigniter,我在我的博客中使用了codeigniter,从一段时间后我就发现了这个错误 PHP致命错误:对第862行/var/www/site/blog/system/core/Loader.PHP中的非对象调用成员函数append_output() 我不知道是什么变化导致了这种情况,也不知道为什么会出现这种情况。该站点被渲染并完全发送到浏览器,从views header.php、index.php到footer.php,所有内容都在那里,然后出现此错误。谷歌搜索显示了另一个网站,在他们网站的最底部有这个错

我在我的博客中使用了codeigniter,从一段时间后我就发现了这个错误

PHP致命错误:对第862行/var/www/site/blog/system/core/Loader.PHP中的非对象调用成员函数append_output()

我不知道是什么变化导致了这种情况,也不知道为什么会出现这种情况。该站点被渲染并完全发送到浏览器,从views header.php、index.php到footer.php,所有内容都在那里,然后出现此错误。谷歌搜索显示了另一个网站,在他们网站的最底部有这个错误

我现在用error_报告(0)消除了这个错误,因为整个站点运行良好,但我不想继续使用这个解决方案

它发生在所有页面上,我有一个控制器(blog.php)和几个方法,比如index()、article()、archive()。这些方法执行它们应该执行的操作,但是当CI完成呈现页面时,所有Controller方法都会出现错误

我可以如何跟踪此问题出现的位置?

如果错误发生在从
get\u instance
返回的值上,那么这将是您的问题。尽管您可能需要查看您使用的版本才能获得正确的行号

此外:

这似乎是函数导致的单例类,它返回在构造函数中创建的
self::$instance

对我来说,这意味着CI_控制器单例在发生错误时尚未实例化

希望这能帮助您调试问题。

如果错误发生在从
get\u instance
返回的值上,那么这将是您的问题。尽管您可能需要查看您使用的版本才能获得正确的行号

此外:

这似乎是函数导致的单例类,它返回在构造函数中创建的
self::$instance

对我来说,这意味着CI_控制器单例在发生错误时尚未实例化


希望这能帮助您调试您的问题。

我也有同样的问题。我已经覆盖了控制器中的输出类($this->output)。

我也有同样的问题。我已经覆盖了控制器中的输出类($this->output)。

无论您试图调用
append\u output
的对象是什么,都在
Loader.php的第862行。弄清楚那是什么物体——弄清楚它应该来自哪里,为什么它不是物体。(看起来CI实例(我猜它来自
get_instance()
而不知道CI)没有
->输出
类。)这就是我对问题的理解程度。php是CI核心的一部分。CI创建一个超级对象,所有用户对象都从那里扩展。我从未接触过Loader.php或任何其他核心文件,我在自己的控制器、模型、视图中对所有内容进行了编码。您是否覆盖了
输出
类?也许用的不是物体的东西?(). 检查它最简单的方法是在行的正上方添加
var\u dump($\u ci\u ci->output)
并找出它包含的内容。不,我没有在任何地方使用$this->output。同样让我困惑的是,站点被完全渲染,但是在$this->load->view('index',$this->data)之后出现致命错误。但是,$this->load->view是index方法中的最后一个调用。如果我在那行之后添加一个echo,它就不会到达那里,在处理load->view之前进行echo'test'。如果我是你,我会在你做任何事情之前,在你做一些事情之后,向你的控制器添加一堆
var\u dump($this->output)
,在页面呈现之前,只是为了检查它突然被替换的位置。无论您试图调用
append\u output
的对象是什么,在
Loader.php
的第862行,它实际上不是一个对象。弄清楚那是什么物体——弄清楚它应该来自哪里,为什么它不是物体。(看起来CI实例(我猜它来自
get_instance()
而不知道CI)没有
->输出
类。)这就是我对问题的理解程度。php是CI核心的一部分。CI创建一个超级对象,所有用户对象都从那里扩展。我从未接触过Loader.php或任何其他核心文件,我在自己的控制器、模型、视图中对所有内容进行了编码。您是否覆盖了
输出
类?也许用的不是物体的东西?(). 检查它最简单的方法是在行的正上方添加
var\u dump($\u ci\u ci->output)
并找出它包含的内容。不,我没有在任何地方使用$this->output。同样让我困惑的是,站点被完全渲染,但是在$this->load->view('index',$this->data)之后出现致命错误。但是,$this->load->view是index方法中的最后一个调用。如果我在那行之后添加一个echo,它不会到达那里,在处理load->view之前,echo'test'。如果我是你,我会在你做任何事情之前,在你做一些事情之后,在页面呈现之前,在你的控制器中添加一堆
var\u dump($this->output)
,只是为了检查它突然被替换的地方。我想知道的是,为什么它仍然呈现站点,然后在处理完所有内容(加载了所有视图)后抛出致命错误?@JherekCarnelian如果查看引用的源代码上的注释,您可以看到它正在尝试刷新所有嵌套的输出缓冲区(以防您的视图呈现另一个视图)。这就是失败的原因。它看起来相同的原因可能是因为您没有任何嵌套的输出缓冲区/视图。我想知道的是,为什么它仍然呈现站点,然后在处理完所有内容(加载了所有视图)后抛出致命错误…@JherekCarnelian如果查看引用的源代码上的注释,您可以看到它正在尝试刷新所有嵌套的输出缓冲区(以防您的视图呈现另一个视图)。这就是失败的原因。它看起来一样的原因可能是因为你没有