Отладка PHP Fatal Error в Yii

Веб программирование Отладка PHP Fatal Error в Yii

Помечено: , ,

  • В этой теме 0 ответов, 1 участник, последнее обновление 1 год, 6 месяцев назад сделано Васильев Владимир Сергеевич.
Просмотр 0 веток ответов
  • Автор
    Сообщения
    • #5310
      @admin
      StudLance.ru

      По умолчанию Yii не обрабатывает Fatal Error от PHP, поэтому приходилось постоянно лезть в лог, и смотреть на ошибки там.

      Причина, по которой Yii не может обработать фатальные ошибки заключается в том, что PHP принципиально не вызывает функции, установленные set_error_handler(), при возникновении ошибок типа E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING. Исправляем это:

      <?php class FatalErrorApplication extends CWebApplication { 
          public function __construct($config=null) { 
              parent::__construct($config);
              register_shutdown_function(array($this, 'shutdown')); 
          } 
          public function shutdown() { 
              if (YII_ENABLE_ERROR_HANDLER && ($error = error_get_last())) {
                  $this->handleError($error['type'], $error['message'], $error['file'], $error['line']);
                  exit();
               }
          }
       }

      И не забываем это подключать в index.php (или с чего там у вас собирается сайт):

      require_once(dirname(__FILE__). '/protected/components/FatalErrorApplication.php'); 
      Yii::createApplication('FatalErrorApplication', $config) ->runEnd('frontend');

      StudLance.ru

Просмотр 0 веток ответов
  • Для ответа в этой теме необходимо авторизоваться.
×