【问题标题】:How to set a error handler safety net in Symfony 4?如何在 Symfony 4 中设置错误处理程序安全网?
【发布时间】:2018-07-15 03:28:42
【问题描述】:

PHP 提供了使用set_error_handler("customError",E_USER_WARNING); 设置客户错误处理程序的可能性(例如)。

如何以及在哪里可以为 Symfony 4 应用程序设置一些默认错误处理程序,以确保我捕获所有未处理的错误?

我注意到提到ErrorHandler::register(); 的调试组件。这是我正在寻找的安全网吗?如果是,我应该将错误处理程序注册调用放在我的代码中的什么位置?我应该修改index.php 页面吗?

【问题讨论】:

    标签: php symfony error-handling


    【解决方案1】:

    在你的index.php,你可以像下面这样使用它:

    $app->error(function (\Exception $e, $code) use ($app) {
        $errors = [
            [
                'status' => $code,
                'detail' => $e->getMessage()
            ]
        ];
        if ($app['debug'] === true) {
            $errors['file'] = $e->getFile();
            $errors['line'] = $e->getLine();
        }
        return new JsonResponse(['errors' => $errors]);
    });
    

    【讨论】:

    • 我认为使用此解决方案无法正确处理对 trigger_error("An error has been triggered"); 的调用。
    • @JVerstry 好吧!你事先没有提到这个问题。但这是在 Symfony 中处理错误的合法方式,我个人在我的应用程序中使用它。顺便说一句,在这种情况下你可以使用Exceptions
    • PHP 的 trigger_error()set_error_handler() 齐头并进
    【解决方案2】:

    内核事件是否可以解决您的问题?

    http://symfony.com/doc/current/event_dispatcher.html

    您可以检查在内核或控制器上发出的所有请求,甚至停止它们的传播。

    【讨论】:

      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 2014-01-14
      • 2021-04-21
      • 2021-08-29
      • 1970-01-01
      相关资源
      最近更新 更多