我想在一个调试= 0的CakePHP站点上记录PHP错误。但是,即使我打开错误日志,如下所示:
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
log_errors = On
它不会记录错误。
问题是,即使是导致CakePHP环境无法完全加载的解析错误(我认为),它仍会阻止记录错误。如果我将debug设置为3,它会毫无问题地登录到该文件。
我正在使用CakePHP 1.2。我知道这显然在1.3中变得更容易,但我还没准备好升级。
答案 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,依此类推。