Почему я не могу обработать фатальные ошибки в CakePHP 2.x с PHP 5.2?

У меня странная проблема в CakePHP, где мой AppExceptionRenderer не вызывается из-за фатальных ошибок и ошибок разбора (E_ERROR а также E_PARSE) при использовании PHP 5.2. Точно такой же код на моей машине разработки (PHP 5.5) работает отлично.

Есть идеи почему?

0

Решение

В итоге я обнаружил, что это ошибка в PHP 5.2, где new SplFileInfo() странно сбрасывает информацию о фатальной ошибке, которая обычно существует внутри error_get_last(),

Мое исправление состояло в том, чтобы настроить Cake по умолчанию App::shutdown() функция путем перемещения _checkFatalError() позвонить выше Cache::write() звонки.

Итак, результат был такой …

public static function shutdown() {
// For some weird reason on PHP 5.2 the SplFileInfo call made in Cache::write
// resets error_get_last() which means we can't trap fatal/parse errors.
// Small workaround is to check for errors *before* doing the caching thing
self::_checkFatalError();

if (self::$_cacheChange) {
Cache::write('file_map', array_filter(self::$_map), '_cake_core_');
}
if (self::$_objectCacheChange) {
Cache::write('object_map', self::$_objects, '_cake_core_');
}
// self::_checkFatalError();
}

Возможно, это когда-нибудь поможет кому-то еще. 🙂

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector