当debug为0时,如何使用CakePHP记录php错误?

时间:2011-02-05 00:38:46

标签: php cakephp cakephp-1.2

我想在一个调试= 0的CakePHP站点上记录PHP错误。但是,即使我打开错误日志,如下所示:

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
log_errors = On

它不会记录错误。

问题是,即使是导致CakePHP环境无法完全加载的解析错误(我认为),它仍会阻止记录错误。如果我将debug设置为3,它会毫无问题地登录到该文件。

我正在使用CakePHP 1.2。我知道这显然在1.3中变得更容易,但我还没准备好升级。

5 个答案:

答案 0 :(得分:2)

另一种跟踪和记录错误的方法是使用Referee plugin,因为它提供了一种任意记录和捕获在执行期间发生的所有(包括致命)错误的方法。

答案 1 :(得分:0)

define('LOG_ERROR',2);在core.php中

答案 2 :(得分:0)

无论CakePhp在做什么,PHP都应该将错误记录到自己的日志文件中。

查看/etc/php.ini文件(或您所居住的任何地方)并搜索 error_log 。这将显示PHP日志驻留在系统上的位置。

答案 3 :(得分:0)

CakePHP 1.2-1.3中存在一个错误,在禁用调试时,视图代码中的PHP错误/警告被禁止。

在#664行的文件cake / libs / view / view.php中,它读取

@include ($___viewFn);

但是@指令抑制了整个视图处理程序的错误。相反它应该是:

include ($___viewFn);

允许在视图代码中生成PHP错误/警告,然后记录。一旦我改变了这一点并在core.php中获得了正确的日志记录设置,我终于能够在生产中获得完整的日志。

答案 4 :(得分:-1)

有时候原因可能会有很大差异。例如,您正在使用的框架可能有自己的内部缓存模块,该模块会在您继续尝试时将值保留在缓冲区中。检查是否生成了重复副本。通常,这些文件将命名为filename.ext.r123,依此类推。