【问题标题】:PHP hide fatal error message and redirectPHP隐藏致命错误消息并重定向
【发布时间】:2014-04-17 11:40:16
【问题描述】:

如果以下代码返回致命错误,我会在页面上收到一条我不希望用户看到的消息。我想隐藏致命错误消息并将用户重定向到另一个页面:

$jinput = JFactory::getApplication()->input;

为了隐藏错误信息,我刚刚添加了:

error_reporting(E_NONE);

但是如何捕获并重定向这样的致命错误?

【问题讨论】:

  • if(!$jinput){ header("Location: http://www.yourwebsite.com/");}
  • 编写不会引发致命错误的代码怎么样?
  • @zerkms 因为我知道在显示致命错误时会发生一些事情

标签: php


【解决方案1】:

像许多其他 PHP 用户一样,您将 error_reporting 选项与 display errors 混淆了。你需要后者。

 ini_set('display_errors', 0);

是你真正需要的。虽然错误报告必须始终保持E_ALL

【讨论】:

    【解决方案2】:

    基本上,您无法“捕获”致命错误,因为它们会停止程序执行。但是有一种方法可以处理它们。注册您自己的关闭处理程序并检查最后一个错误是否是致命的。

    <?php
    function shutdownHandler()
    {
        $error = error_get_last();
        if ($error['type'] == E_ERROR) {
            your code goes here;
        }
    }
    register_shutdown_function('shutdownHandler');
    

    演示:https://eval.in/137869

    【讨论】:

    • 警告:register_shutdown_function() [function.register-shutdown-function]:传入的关闭回调“shutdownHandler”无效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多