【发布时间】:2011-08-04 19:22:10
【问题描述】:
有没有办法让PHP 将错误记录到文件或通过电子邮件将错误INCLUDING $_POST[] & $_GET[] 和$_SERVER[] 数据发送给我?
现在,我收到了 PHP FATAL 和 WARNING 错误和 404 NOT_FOUND 错误的日志,但在不知道用户输入和引用者等信息的情况下很难调试一些错误。
谢谢
【问题讨论】:
标签: php
有没有办法让PHP 将错误记录到文件或通过电子邮件将错误INCLUDING $_POST[] & $_GET[] 和$_SERVER[] 数据发送给我?
现在,我收到了 PHP FATAL 和 WARNING 错误和 404 NOT_FOUND 错误的日志,但在不知道用户输入和引用者等信息的情况下很难调试一些错误。
谢谢
【问题讨论】:
标签: php
error_log(print_r($_POST, true));
error_log(print_r($_GET, true));
将其放入custom error handler 中,它会为您记录两者('true' 参数使 print_r 返回文本而不是输出文本)。
您可能需要使用 log_errors_max_len 增加错误日志中的最大行长度,因为它默认为 1024 个字符,并且会截断之后的所有内容(它不会将 >1024 个字符数据拆分为多行)。
【讨论】:
$response 500 输出,它运行良好,运行测试时在终端打印错误。谢谢。
如果您使用的是 PHP 5,请创建一个自定义异常类,该类将 extend the native PHP Exception class 并添加您喜欢的任何数据收集/记录方法。这样您就可以轻松地将try {} catch() {} 块与异常结合起来,并以您自己的方式控制您希望如何记录所有数据。
【讨论】:
我会推荐 error_log() 函数。我经常使用它来调试 php 中的东西。 http://php.net/manual/en/function.error-log.php
【讨论】:
我在一个电信项目中工作,该项目使用 CI 来处理基于 Felx 的前端,我们劫持了所有可能的错误报告,并在 syslog 函数上编写了一个包装器,并在我们的应用程序中使用它,结果是我们可以记录我们想要的任何数据,并且日志通过系统日志查看器可见:-)
【讨论】: