gpt4 book ai didi

php - 为什么我不能用 PHP 5.2 处理 CakePHP 2.x 中的 fatal error ?

转载 作者:行者123 更新时间:2023-12-03 08:13:33 24 4
gpt4 key购买 nike

我在 CakePHP 中遇到了一个奇怪的问题,我的 AppExceptionRenderer使用 PHP 5.2 时不会因 fatal error 和解析错误( E_ERRORE_PARSE )而触发。我的开发机器(PHP 5.5)上完全相同的代码工作正常。

任何想法为什么?

最佳答案

我最终将其追踪到似乎是 PHP 5.2 中的一个错误,其中调用了 new SplFileInfo()奇怪地重置了 error_get_last() 中通常存在的 fatal error 信息.

我的解决方法是调整 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();
}

也许有一天它可以帮助其他人。 :-)

关于php - 为什么我不能用 PHP 5.2 处理 CakePHP 2.x 中的 fatal error ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com