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 WhoopsRun;
        $whoops->pushHandler(new WhoopsHandlerPrettyPageHandler());
        $whoops->register();
        throw new Exception("Whoops exception testing");
        break;
    case 'testing':
        break;
    case 'production':
        break;
    default:
        exit(1);
}

Whoops 处理文件中发生的错误index.php但不会在控制器或模型中发生错误时处理,似乎 CI 错误处理程序在 Whoops 之前先捕获错误。

下一次尝试是在构造MY_Controller.php注册 Whoops,它可以工作,但只有 Exception 由 Whoops 处理,一个简单的语法错误,例如忘记分号仍然由 CI 错误处理程序处理。将 Whoops 处理程序实例到不同的地方有点奇怪。

参考:点码器 + 哎呀

我通过执行以下操作使其正常工作:

  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 WhoopsRun;
            $whoops->pushHandler(new WhoopsHandlerPrettyPageHandler());
            $whoops->register();
        }
    }
    

相关内容

  • 没有找到相关文章

最新更新