4

PHP 以显示丑陋的错误消息而闻名,尽管它们有时很有用。我知道我可以隐藏错误消息

error_reporting(0);

这很好,但它让用户完全不知道发生了什么。该页面已停止工作,他们不知道为什么。如何显示一条简单的消息,如“抱歉,出现错误。请发送电子邮件给网站管理员”?

对于所有错误,这将是相同的消息,我正在考虑可能会弹出一个 javascript 警报,但对任何其他想法持开放态度。

4

5 回答 5

3

实现错误和异常处理程序

您需要编写一个像这样的自定义错误处理程序。正如您在底部看到的那样,我正在引入一个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
于 2013-11-01T12:08:00.393 回答
2

有一些规则应该适用于生产服务器:

  1. 永远不要向他们展示原始的 PHP 错误消息!设置display_errors = off
  2. 记录这些错误。在 中设置log_errors = on并定义一个有效的日志目标error_log
  3. 监控错误日志,并对其采取行动。:)

对用户侧的错误处理已经得到了其他人的充分回答。

于 2013-11-01T12:19:18.077 回答
1

您可以编写执行此操作的自定义错误处理程序

http://php.net/manual/en/function.set-error-handler.php

于 2013-11-01T12:08:34.053 回答
1

这通常通过异常来完成。如果出现问题,您将抛出一个异常,然后使用异常处理程序“处理它” 。

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也可能会引起你的兴趣。

于 2013-11-01T12:08:36.303 回答
0

用户自定义错误处理set_error_handler

和异常处理程序set_exception_handler

在那里你可以做任何你喜欢的事情。

于 2013-11-01T12:08:52.370 回答