2015-12-14 134 views
0

我自己的PHP框架分析文件這樣搶內容:PHP輸出緩衝

ob_start(); 
include($file); 
$content = ob_get_clean(); 

不過,現在我在一個自己error_handler工作顯示錯誤頁面,如果任何錯誤發生,即使它happning在像上面演示的代碼片段一樣解析模板。

有趣的是,當代碼由於錯誤而死亡時,所包含模板的內容被打印到瀏覽器中。這當然會讓我的錯誤頁面看起來很糟糕。

不應該打開輸出緩衝區來防止打印內容?

尤其是因爲ob_get_clean()應該在解析它之後清除內容。

這是怎麼發生的?

如果我沒有遇到錯誤,網站按預期工作。

我該如何解決這個問題?

+0

您的意思是'$ file'包含要執行的代碼,而不是被動標記或數據? – arkascha

+0

$文件主要包含正在打印的HTML內容。它的網站的HTML代碼和課程也包含PHP代碼,如循環和條件。一個正常的網站視圖,因爲這是一個基於MVC模式的框架。 – Steini

回答

0

我想我有同樣的問題。嘗試使用ob_clean():

try { 
    $app = new App($some_config); 
    $app->run(); 
} 
catch (Exception $e) { 
    ob_clean(); 
    // Display your error page. 
}