PHP 以显示丑陋的错误消息而闻名,尽管它们有时很有用。我知道我可以隐藏错误消息
error_reporting(0);
这很好,但它让用户完全不知道发生了什么。该页面已停止工作,他们不知道为什么。如何显示一条简单的消息,如“抱歉,出现错误。请发送电子邮件给网站管理员”?
对于所有错误,这将是相同的消息,我正在考虑可能会弹出一个 javascript 警报,但对任何其他想法持开放态度。
PHP 以显示丑陋的错误消息而闻名,尽管它们有时很有用。我知道我可以隐藏错误消息
error_reporting(0);
这很好,但它让用户完全不知道发生了什么。该页面已停止工作,他们不知道为什么。如何显示一条简单的消息,如“抱歉,出现错误。请发送电子邮件给网站管理员”?
对于所有错误,这将是相同的消息,我正在考虑可能会弹出一个 javascript 警报,但对任何其他想法持开放态度。
您需要编写一个像这样的自定义错误处理程序。正如您在底部看到的那样,我正在引入一个FATAL
错误。在这里,PHP 不会像您引用的那样吐出任何丑陋的错误消息。它只会打印Some Error Occured. Please Try Later.
<?php
set_error_handler( "log_error" );
set_exception_handler( "log_exception" );
function log_error( $num, $str, $file, $line, $context = null )
{
log_exception( new ErrorException( $str, 0, $num, $file, $line ) );
}
function log_exception( Exception $e )
{
echo "Some Error Occured. Please Try Later.";
exit();
}
require_once("texsss.php");// I am doing a FATAL Error here
有一些规则应该适用于生产服务器:
display_errors = off
。log_errors = on
并定义一个有效的日志目标error_log
。对用户侧的错误处理已经得到了其他人的充分回答。
您可以编写执行此操作的自定义错误处理程序
这通常通过异常来完成。如果出现问题,您将抛出一个异常,然后使用异常处理程序“处理它” 。
function exception_handler($exception) {
echo "Oops! Something went wrong! We're looking into it!";
}
set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');
您还可以使用register_shutdown_function捕获许多致命错误。
set_error_handler也可能会引起你的兴趣。