0

我好像有鬼。我正在加载一个页面(通常在另一个页面中加载,如果有帮助,但是当我自己加载页面时仍然会出现错误)并且在输出的顶部,在其他所有内容之前,我得到一个随机的false.

期间输出$this->load->view('my_view');。我去调查了 CodeIgniter 系统文件,发现在_ci_load($_ci_data)方法中,有一行写着ob_start();. 当我在这段代码周围加上这样的行时:

echo "hey!";
ob_start();
echo "here!";

我得到的输出是hey!falsehere!.

我发现我可以阻止输出的唯一方法是在代码中的某个位置之前false放置另一个。ob_start()我在控制器、视图、视图加载器和 CodeIgniter.php 本身中摆弄了不同的位置。这是我发现它中断的地方:

// Is there a "remap" function? If so, we call it instead
if (method_exists($CI, '_remap'))
{
    $CI->_remap($method, array_slice($URI->rsegments, 2));
}

如果我ob_start()在调用 to 之前放置_remapfalse则消失;如果我之后把它放正,false仍然会出现。

有谁知道该怎么做?我知道这是一个非常困难且晦涩的问题,但我不知道下一步应该采取什么措施。任何关于问题可能来自何处的建议都非常受欢迎。

我正在运行 PHP 5.4.30,使用 CodeIgniter 2.1.4(可能是更新时间......)

4

1 回答 1

0

事实证明,问题出在一个模型的深处,该模型由控制器调用的另一个模型调用,该模型false在发生某种错误情况时输出 a。故事的寓意,深入研究我自己的代码,而不是将其归咎于框架中的错误......

于 2015-07-14T20:34:38.133 回答