用户友好的PHP错误消息

时间:2013-11-01 12:04:25

标签: php error-handling

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

隐藏错误消息
error_reporting(0);

这没关系,但它让用户完全处于黑暗状态。该页面已停止工作,他们不知道原因。如何显示一条简单的信息:“抱歉,有错误。请发送电子邮件给网站管理员”?

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

5 个答案:

答案 0 :(得分:2)

实施错误暨异常处理程序

您需要编写这样的自定义错误处理程序。正如您在底部看到的,我正在引入 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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

这通常通过例外来完成。如果出现问题,你会抛出一个异常,然后用exception handler“处理它”。

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

答案 3 :(得分:1)

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

  1. 永远不要向他们展示原始的PHP错误消息!设置display_errors = off
  2. 记录这些错误。设置log_errors = on并在error_log中定义有效的日志目标。
  3. 监控错误日志,并对其进行操作。 :)
  4. 其他人已经充分回答了对用户方的错误处理。

答案 4 :(得分:0)

用户自定义错误处理set_error_handler

和异常处理程序set_exception_handler

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