Php Laravel关闭异常处理程序

Php Laravel关闭异常处理程序,php,laravel,Php,Laravel,在Laravel中,每当出现错误时,即使是很小的通知、警告和不推荐的错误,我都会得到完整的调试信息,从而终止应用程序。在我的App.config中,我已经将debug=>false设置为false,并且我得到了这样一条消息:“哎哟,好像出了什么问题。” 如何关闭除Laravel之外的所有错误处理功能,以获得不会中断整个应用程序流程的正常PHP错误?App\Exceptions\Handler.PHP文件就是为此而构建的 在public function render()方法中,如果选择以下选项,

在Laravel中,每当出现错误时,即使是很小的通知、警告和不推荐的错误,我都会得到完整的调试信息,从而终止应用程序。在我的App.config中,我已经将debug=>false设置为false,并且我得到了这样一条消息:“哎哟,好像出了什么问题。”


如何关闭除Laravel之外的所有错误处理功能,以获得不会中断整个应用程序流程的正常PHP错误?

App\Exceptions\Handler.PHP文件就是为此而构建的

public function render()
方法中,如果选择以下选项,可以捕获应用程序并执行某些重定向/页面视图:

例如,您可以在应用程序中捕获
HttpException
,然后根据需要返回错误页面:

public function render($request, Exception $e)
{
    //other stuff

    if ($e instanceof HttpException) {
        return view('errors.general')->withErrors([
            'message' => 'The application encountered an error!'
        ]);
    }

    return parent::render($request, $exception);
}

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

Laravel在
illumb/Foundation/Bootstrap/HandleExceptions.php
中注册其错误处理。此引导程序是Http内核处理请求时调用的几个引导程序之一

虽然有两种方法可以完成您想要做的事情,但我认为最简单的方法是处理调用此引导程序后触发的事件。在事件处理程序中,可以为不希望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);
            }
        });
    }
);

那个投票结果与他所问的相反。 据我所知,没有办法将错误报告和laravel接管屏幕渲染分开。我一直在浏览Laravel5的代码,还没有找到一种使用它们的设置将它们分开的方法


您可以编写自己的库来完全接管所有错误处理,并删除所有laravel内部跟踪,但在需要原始页面错误处理的情况下,您必须确保将其传递回laravel。最简单的方法是找到第三方错误处理程序供应商,然后对其进行修改,以接管所有错误处理程序,而不是阻止渲染。

读到这个问题,然后你的昵称让我咯咯地笑了,因为这正是我读过之后的想法:)无论如何,+1来自我,以获得正确答案。