我正在使用PHP开发一个Web应用程序,我的一些朋友正在测试它。您建议我使用哪种方法来了解他们获得了哪些警告,但没有使用ini_set('display_errors', 1);
显示它们?
此外,该应用程序将在我无法远程访问的Intranet中运行。
我当时想把每天发送的电子邮件发给我,但我不知道要保存哪些重要事实。你有文章/样品吗?你对我有更好的建议吗?
答案 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 mail(),但像PHPMailer这样的库可以加快速度(并且更易于使用)。
答案 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作为一个更灵活的选项。