之前已经以更一般的方式询问了这个问题。我想在生产服务器上的特定页面上显示错误消息,但我无法访问php.ini
文件。在生产服务器上的特定PHP页面上启用所有错误和警告的最佳方法是什么?
我尝试了ERROR_REPORTING(E_ALL);
。
答案 0 :(得分:32)
要启用错误,您必须在触发之前使用error_reporting
(例如,在PHP脚本的开头):
error_reporting(E_ALL);
要显示错误,您应该配置display_errors
:
ini_set('display_errors', 'On');
(应该在生产服务器上禁用此项,这意味着您可能必须以这种方式启用它,即使在配置error_reporting
后)
当然,所有这些都可以封装在if
块中,以确保只有您可以看到错误消息 - 特别是如果您在实时生产网站上这样做;例如:
if ($_SESSION['is_admin'])
{
error_reporting(E_ALL);
ini_set('display_errors', 'On');
}
为了让事情变得更漂亮,您可能还需要配置html_errors
:
ini_set('html_errors', 'On');
答案 1 :(得分:4)
你真的不应该在生产服务器上显示它们。最好的方法是创建一些日志系统。
请记住使其可重复使用!
答案 2 :(得分:1)
一个不同的方法是一起注册错误处理程序:set_error_handler
这样,您可以选择如何处理错误:将它们邮寄给管理员,显示友好的错误消息,登录到文件/数据库,...
答案 3 :(得分:1)
另外需要注意的是,您可能不仅希望显示错误,还要将它们记录到文件/数据库中。仅仅在生产环境中向用户显示错误是不够的;要求他们报告问题将导致您不知道您的服务器出了什么问题,直到为时已晚。在基本错误和异常处理程序中,确保具有记录问题的逻辑(尽可能多的调试信息 - 堆栈跟踪,用户IP,浏览器,应用程序版本等)到持久存储中。