0

出于某种原因,我的 Slim 4 应用程序错误处理程序没有捕获可以被捕获的错误,\Exception并且我在浏览器中看到502 bad gateway错误,这是我的ErrorMiddleware配置(我正在使用 PHP-DI 来配置它):

   $definitions[ErrorMiddleware::class] = static function(ContainerInterface $container): ErrorMiddleware {
            $middleware = new ErrorMiddleware(
                $container->get(CallableResolverInterface::class),
                $container->get(ResponseFactoryInterface::class),
                (bool)$container->get(Config::class)->get('main.debug'), //false or true
                true,
                true
            );
            $middleware->setErrorHandler(HttpNotFoundException::class, $container->get(NotFoundHandler::class));


            return $middleware;
        };

我试图添加处理程序来处理这样的 500 错误$middleware->setErrorHandler(HttpInternalServerErrorException::class, $container->get(NotFoundHandler::class) );

但它不起作用,502 bad gateway直到我将所有控制器操作都用try/catch(\Exception $e).

我需要添加一些其他错误处理程序吗?我不清楚如何在 slim 4 应用程序中正确设置处理。

更新: 我发现ErrorMiddleware默认情况下 slim 会捕获HttpException正在扩展的 slim Exception,但为什么不直接Exception甚至Throwable优雅地退出带有漂亮错误页面的应用程序

4

1 回答 1

0

好吧,这是我的错,slim 一切都很好,它在“log_error()”功能中失败,因为ErrorMiddlware配置为记录错误,但我还没有安装和配置Monolog,所以它将日志写入php-fpm日志并nginx抛出 502错误

于 2019-12-14T11:35:49.223 回答