“false”出现在ob_start旁边()
问题描述:
我似乎有一个鬼。我正在加载一个页面(通常在另一个页面中加载,如果有帮助的话,但是当我自己加载页面时该错误仍然出现)并且在输出的顶部,在所有其他页面之前,我会随机获得一个false
。“false”出现在ob_start旁边()
正是在$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()
电话前_remap
,该false
消失;如果我之后说得对,false
仍然显示出来。
任何人都知道该怎么办?我知道这是一个非常困难和晦涩的问题,但我不知道我应该采取的下一步是什么。任何有关问题可能来自哪里的建议都非常受欢迎。
我运行PHP 5.4.30,用笨2.1.4(也许是时候更新...)
答
原来,问题是深刻的一个由那是控制器称为另一种模式叫做模型内部当某个错误状况发生时输出false
。这个故事的寓意,搜索深入到我自己的代码,而不是指责它在框架中的一个错误......
如果'FALSE'正在由'_remap'方法的输出,也许看方法做什么。我猜测有一个'echo'或'print'在某个布尔变量上被调用的地方。 –
我会更新到3.0,并停止与系统文件 – CodeGodie
@ AlexanderO'Mara搞乱,我看着_remap方法和它所做的是在我的控制器方法调用call_user_func_array。所以我想也许是因为我有一个旧版本的PHP,但更新到5.6并没有解决它。 – Jan