php - Laravel 关闭异常处理程序

标签 php laravel

<分区>

在 Laravel 中,只要出现错误,即使是轻微的 NOTICES、WARNINGS 和 DEPRECATED 错误,我都会得到完整的调试信息,从而终止应用程序。在我的 App.config 中,我已将 debug => false 设置为“糟糕,看起来出了点问题”。

我怎样才能关闭除 Laravel 之外的所有错误处理,以获取不会中断整个应用程序流程的正常 PHP 错误?

最佳答案

如果您不想因某些 PHP 错误类型而中断您的工作流程,则需要禁用 Laravel 为这些错误注册的错误处理程序。

Laravel 在 Illuminate/Foundation/Bootstrap/HandleExceptions.php 中注册了它的错误处理。此 Bootstrap 是您的 Http 内核处理请求时调用的多个 Bootstrap 之一。

虽然有几种方法可以做您想做的事,但我认为最简单的方法是处理调用此 Bootstrap 后触发的事件。在事件处理程序中,您可以为您不希望 Laravel 处理的错误重置错误处理程序。

在您的 bootstrap/app.php 文件中,在返回 $app 之前添加以下行:

$app->afterBootstrapping(
    'Illuminate\Foundation\Bootstrap\HandleExceptions',
    function ($app) {
        set_error_handler(function ($level, $message, $file = '', $line = 0, $context = []) {
            // Check if this error level is handled by error reporting
            if (error_reporting() & $level) {
                // Return false for any error levels that should
                // be handled by the built in PHP error handler.
                if ($level & (E_WARNING | E_NOTICE | E_DEPRECATED)) {
                    return false;
                }

                // Throw an exception to be handled by Laravel for all other errors.
                throw new ErrorException($message, 0, $level, $file, $line);
            }
        });
    }
);

关于php - Laravel 关闭异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41091942/

相关文章:

php - Android 和 PHP 之间最快的通信

php - html的基本php流程

php - 从 SQL 表中选择 MAX 值应用于另一个表

php - Laravel 独特的软删除数据验证

php - 通过表单 Cookie 和 GET

javascript - 发送编码后的图像并在解码后上传到 s3

php - 用户名和电子邮件一起登录 laravel 5.3

php - 如何从 laravel 5 中的两个相关表中获取数据

javascript - Laravel - 从 Ajax Post 请求获取数据

php - Laravel 5.2 中的 API 限制