每天通过电子邮件发送PHP警告或如何发送?

时间:2010-02-04 20:28:19

标签: php email warnings

我正在使用PHP开发一个Web应用程序,我的一些朋友正在测试它。您建议我使用哪种方法来了解他们获得了哪些警告,但没有使用ini_set('display_errors', 1);显示它们?

此外,该应用程序将在我无法远程访问的Intranet中运行。

我当时想把每天发送的电子邮件发给我,但我不知道要保存哪些重要事实。你有文章/样品吗?你对我有更好的建议吗?

4 个答案:

答案 0 :(得分:6)

  • 您可以在不显示错误的情况下记录错误。

例如,您可以执行以下操作:

error_reporting(E_ALL | E_STRICT); //For PHP 6 E_STRICT become part of E_ALL
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');
ini_set('error_log', $_SERVER['DOCUMENT_ROOT'] . '/php.log');

您也可以编辑PHP.ini或使用.htaccess(如果在Apache上)。

  • 如果您无法远程访问此日志,则可以创建一个小型PHP应用程序,通过电子邮件向您发送日志。

您可以使用PHP mail(),但像PHPMailer这样的库可以加快速度(并且更易于使用)。

  • CRON job(或类似的东西)每天(或一周或其他)发送电子邮件。

答案 1 :(得分:2)

编写错误处理程序并使用set_error_handler确保调用它而不是默认值。在那个处理程序中,你可以做任何你认为最适合你的目的。

如果您想要每日发送电子邮件,您可以将数据保存到数据库或文件中,并每天运行一次cronjob以发送包含最新数据的电子邮件。我可能更愿意只保存到数据库中的日志表,然后我可以通过相关的某个界面查看。

但这并不会抓住一切 - 所有E_WARNING都会被捕获,但并非所有其他类型都会被捕获。例如,无法以这种方式捕获解析错误,如果您也想要处理异常,则应使用set_exception_handler

答案 2 :(得分:0)

我认为这是唯一的可能性。

如果你可以连接那里,你可以看到apache日志。

但不然。对不起。

答案 3 :(得分:0)

我最好的建议是阅读PHP的set_error_handler功能。它可以让您准确确定每当发生错误时会发生什么 - 无论是通过电子邮件发送,记录它还是您想做的任何事情。

现在,有许多关于PHP中的日志记录错误的精彩文章,而不是将它们显示给最终用户。一些随机的例子,我在30秒的谷歌搜索中发现: http://davidwalsh.name/custom-error-handling-php http://www.electrictoolbox.com/log-php-errors-log-errors-error-log/ http://www.w3schools.com/php/php_error.asp

有很多方法可以处理PHP中的错误。除了前面提到的,你可以依赖默认的PHP错误日志(默认情况下,PHP使用Apache的错误日志,即/ var / log / httpd / error_log)。但是,您可以修改php.ini以将消息发送到您喜欢的任何文件。您可以每天检查该文件以查看发生的错误。

您还可以设置一个CRONTAB脚本,每天读取一次该文件并通过电子邮件发送给您,然后将其清除。

同样,我建议将set_error_handler作为一个更灵活的选项。