2012-06-12 185 views
0

我一直在環顧四周,關注每個教程,其中有一個突出。 http://blog.lysender.com/2011/02/kohana-3-1-migration-custom-error-pages/ < - 我也跟着本教程和一切順利Kohana 404自定義頁面

  1. 被檢測到錯誤
  2. 異常被處理

,但一直是我似乎無法找到一個例外。我目前有這個例外

Fatal error: Exception thrown without a stack frame in Unknown on line 0 

我所有的代碼是相同的網站鏈接。請幫助我..即時通訊竊聽,因爲有史以來,我已經看過這裏也Kohana 3 - redirect to 404 page但由於我是一個初學者,它真的很難理解它。我也發現從KO 3.0到3.1有一個重大的改進,KO 3.2怎麼樣?感謝您的幫助:)

+0

請閱讀有關該錯誤信息的手冊:http://php.net/manual/en/function.set-exception-handler.php - 謝謝你! – hakre

回答

1

來自kohana源代碼。

- > If you receive *Fatal error: Exception thrown without a stack frame in Unknown on line 0*, it means there was an error within your exception handler. If using the example above, be sure *404.php* exists under */application/views/error/*.

也許會有所幫助。這可能已經修復了,但我並沒有太多關注kohana的開發。它涉及到拉入請求#246:https://github.com/kohana/core/pull/246,這是源:https://github.com/kohana/core/pull/246/files#L208L76

1

這裏是我做它的Kohana 3.2

  • 添加例外的index.php
處理的東西
 
    try 
    { 
     $request = $request->execute(); 
    } 
    catch(Kohana_HTTP_Exception_404 $e) 
    { 
     $request = Request::factory('errors/404')->execute(); 
    } 
    catch(Exception $e) 
    { 
     $request = Request::factory('errors/500')->execute(); 
    } 

    echo $request->send_headers()->body(); 
  • 然後寫入錯誤控制器
 
class Controller_Errors extends Controller 
{ 
    public function __construct($request, $response) 
    { 
     parent::__construct($request, $response); 
    } 

    public function action_404() 
    { 
     $this->response->body(View::factory('errors/404')); 
    } 

    public function action_500() 
    { 
     $this->response->body(View::factory('errors/500')); 
    } 
} 
  • 創建2個相應的錯誤頁面(404.php和500.php的意見/錯誤)

  • 增加新路線,以你的bootstrap.php或使用默認的(取決於你的項目結構),只要確保Controller_Errors可以在拋出異常時到達

  • 現在,每次在控制器中拋出異常時,它都會顯示自定義錯誤頁面,如下所示:
 
throw new HTTP_Exception_404;