【问题标题】:Slim 3 blackholing errorsSlim 3 黑洞错误
【发布时间】:2016-03-07 02:56:43
【问题描述】:

我有一个小的 slim 3 应用程序,当我抛出异常 slim 时只会显示一般错误消息:

Slim 应用程序错误

发生了网站错误。暂时给您带来不便,敬请见谅。

在 slim 2 中,您可以执行以下操作来打开调试模式,为您提供回溯等:

$app->config('debug', true);

在 slim 3 中似乎没有。此外,它似乎覆盖了我的异常和错误处理程序。

我怎样才能变得苗条以吐出错误,或者至少调用我的错误处理程序(将输出通过管道传输到 kint 以获取调试信息)

【问题讨论】:

  • 您使用的是哪个版本的 Slim 3?
  • 3.0.0-RC3 - 但它也使用 RC2 来做到这一点

标签: slim


【解决方案1】:

使 displayErrorDetails->true。 你会找到错误的原因。

 $config = ['settings' => [
        'addContentLengthHeader' => true,
        'displayErrorDetails' => true
    ]];
    $app = new \Slim\App($config)

【讨论】:

    【解决方案2】:

    错误处理有据可查:Official Docs

    $app = new \Slim\App();
    $c = $app->getContainer();
    $c['errorHandler'] = function ($c) {
        return function ($request, $response, $exception) use ($c) {
             return $c['response']->withStatus(500)
                                  ->withHeader('Content-Type', 'text/html')
                                  ->write('Something went wrong!');
             };
       };
    

    【讨论】:

      【解决方案3】:

      错误处理是最好的解决方案。您可以执行类似查看 Error Trace

      的操作
      $app = new \Slim\App();
      $container = $app->getContainer();
      $container['phpErrorHandler'] = $container['errorHandler'] = function ($c) {
          return function ($request, $response, $exception) use ($c) {
               return $c['response']->withStatus(500)
                                    ->withHeader('Content-Type', 'text/html')
                                    ->write('Something went wrong!<br><br>' . 
                                            nl2br($error->getTraceAsString()));
               };
         };
      

      【讨论】:

        【解决方案4】:

        要在默认异常处理程序上显示完整的堆栈跟踪,请使用 j-v 所说的内容。

        如果你想自己处理 Slim 中的异常,那么你需要覆盖 Slim 的默认异常处理程序,因为它将在你的“不在 Slim 中”错误处理程序之前使用:

        $app = new \Slim\App();
        
        $container = $app->getContainer();
        $container['errorHandler'] = function(ServerRequestInterface $request, ResponseInterface $response, Exception $exception) {
            //Handle exception here
        }
        

        【讨论】:

          【解决方案5】:

          查看源代码,可以使用如下所示的错误显示来初始化 slim 3:

          $app = new \Slim\App(['settings' => ['displayErrorDetails' => true]]);
          

          我不确定是否可以在不完全替换 errorHandler 的情况下更改此设置。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-07-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-22
            • 1970-01-01
            • 2011-07-21
            相关资源
            最近更新 更多