在CakePHP中发生任何错误时发送电子邮件

时间:2010-09-15 14:04:13

标签: php cakephp error-handling error-logging

我在PHP开发中使用CakePHP。我在core.php文件中将调试模式设置为0。

Configure::write('debug', 1);

此设置不会在网站上显示任何错误。因此,用户/开发人员将无法看到错误。 Thant之所以我想制作一些会给我发送错误标题和错误代码的电子邮件,例如警告信息,通知(8):就像错误信息一样。因此,如果发生错误,则不会被忽略。

感谢。

3 个答案:

答案 0 :(得分:3)

如果每次发生错误时都会收到一封电子邮件,那么您将被淹没,直到错误得到解决,这可能效率不高或效率不高。

您可以使用限制控制编写错误的电子邮件系统,其中一旦从CakePHP引发每个错误,它就被放置在数据库中(可能键入md5(errortext))并立即通过电子邮件发送给感兴趣的人。然后,下次遇到完全相同的错误时,系统会看到它已经在数据库中(相同的md5),而不是再次通过电子邮件发送。

另外,CakePHP不能配置为将错误记录到日志文件中吗?然后,您可以手动或通过logcheck之类的错误检查错误,这些错误将在频繁的时间表中运行,检查CakePHP日志文件是否存在特定错误,如果找到任何新错误,则通过电子邮件发送摘要。

答案 1 :(得分:0)

我认为你可以通过覆盖PHP的默认错误处理程序来实现这一目标。相关的PHP手册页:http://php.net/manual/en/function.set-error-handler.php

基本上,您只需定义一个函数(并告诉您的脚本在出错时调用该函数)。您的定义需要在错误上适当地返回false或die()(否则脚本将继续执行)。但是,在该功能中,您可以拨打电话发送电子邮件。

请注意,如果您在CakePHP中执行此操作,则可能需要将当前对象作为参数传递,否则您定义的错误处理程序可能与其他蛋糕对象的内容无法很好地结合。

答案 2 :(得分:0)

我即将发布一个开源项目来实现这一目标,等等。它收集错误,将它们发送到问题跟踪器,检测重复项,将它们变成问题并通过电子邮件发送给员工。

详细信息位于https://sourceforge.net/news/?group_id=317819&id=293422,其提及的版本0.1.7将在几天后发布。

开源跟踪器位于http://elastik.sourceforge.net/

欢迎任何反馈,谢谢