0

我似乎有一個鬼。我正在加載一個頁面(通常在另一個頁面中加載,如果有幫助的話,但是當我自己加載頁面時該錯誤仍然出現)並且在輸出的頂部,在所有其他頁面之前,我會隨機獲得一個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(也許是時候更新...)

+0

如果'FALSE'正在由'_remap'方法的輸出,也許看方法做什麼。我猜測有一個'echo'或'print'在某個布爾變量上被調用的地方。 –

+0

我會更新到3.0,並停止與系統文件 – CodeGodie

+0

@ AlexanderO'Mara搞亂,我看着_remap方法和它所做的是在我的控制器方法調用call_user_func_array。所以我想也許是因爲我有一箇舊版本的PHP,但更新到5.6並沒有解決它。 – Jan

回答

0

原來,問題是深刻的一個由那是控制器稱爲另一種模式叫做模型內部當某個錯誤狀況發生時輸出false。這個故事的寓意,搜索深入到我自己的代碼,而不是指責它在框架中的一個錯誤......