【发布时间】:2012-08-24 22:33:01
【问题描述】:
我需要记录我网站的致命错误。
我通常会检查 error.log 和 debug.log 文件中的 CakePHP 错误。
但我发现 PHP 相关的致命错误没有记录在某个地方。
还讨论了in this thread。
我检查了 php.ini。它有以下几行:
log_errors = On
;error_log = filename
我无权更改 php.ini。我可以要求管理员更改此设置,但似乎每次我需要更改时我都需要问他:) 我也担心性能。记录错误是否会降低性能?
所以我发现我可以在脚本中添加以下两行来记录错误并在需要时更改文件夹或文件名。
ini_set("log_errors", 1);
ini_set("error_log", "/path/to/php-error.log");
所以我想知道将这些行放在我的代码中的什么位置?我应该把它放在 AppController::beforeFilter 里面吗?还是在 CakePHP 2 配置中有更好的地方/解决方案?
【问题讨论】:
-
据我所知,您无法在 PHP 中记录致命错误,因为致命错误对 PHP 解释器来说是致命的。您的 ini_set 方法也可能存在缺陷,因为它不会捕获任何错误,包括加载这些行所在的文件,因此仍然无法正确记录早期死亡。
-
不是 apache 也记录了这些错误吗?
-
如果致命错误发生在任何包含的文件中(即不是第一个请求文件),使用
[set_error_handler()](http://php.net/manual/en/function.set-error-handler.php)记录应该相当容易。另一方面,无法处理解析/编译错误。
标签: cakephp logging cakephp-2.0 php