簡體   English   中英

帶有Whoops的CodeIgniter 3

[英]CodeIgniter 3 with Whoops

我無法完全解決CI中發生的任何錯誤,Whoops通過向index.php添加處理程序盡早注冊。

switch (ENVIRONMENT)
{
    case 'development':
        error_reporting(-1);
        ini_set('display_errors', 1);
        error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);

        $whoops = new \Whoops\Run;
        $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
        $whoops->register();

        throw new Exception("Whoops exception testing");

        break;

    case 'testing':

        break;

    case 'production':

        break;

    default:

        exit(1);
}

Whoops處理在index.php文件中發生的錯誤,但是當Controller或Model中發生錯誤時卻無法處理,看來CI錯誤處理程序在Whoops之前先捕獲了錯誤。

下一個嘗試是也在MY_Controller.php構造中注冊MY_Controller.php ,它可以工作,但是只有Exception由MY_Controller.php ,這是一個簡單的語法錯誤,例如忘記分號仍由CI錯誤處理程序處理。 將Whoops處理程序部署到不同的地方有點奇怪。

參考: Codeigniter +哎呀

通過執行以下操作,我使其運行良好:

  1. 確保在config/config.php中啟用了掛鈎

     $config['enable_hooks'] = true; 
  2. config/hooks.php添加一個鈎子

     $hook['pre_system'][] = array( 'class' => 'WhoopsHook', 'function' => 'bootWhoops', 'filename' => 'WhoopsHook.php', 'filepath' => 'hooks', 'params' => array() ); 
  3. 使用以下代碼創建一個新的文件hooks/WhoopsHook.php

     <?php class WhoopsHook { public function bootWhoops() { $whoops = new \\Whoops\\Run; $whoops->pushHandler(new Whoops\\Handler\\PrettyPageHandler()); $whoops->register(); } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM