超薄3黑色错误

时间:2015-12-02 18:12:07

标签: slim

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

  

超薄应用程序错误

     

发生网站错误。很抱歉暂时不便。

在slim 2中你可以做这样的事情来打开调试模式,让你回溯等等:

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

在苗条3中,似乎并不是一个。此外,它似乎覆盖了我的异常和错误处理程序。

如何解决错误,或者至少调用我的错误处理程序(将输出通过管道传递给kint以获取调试信息)

5 个答案:

答案 0 :(得分:18)

查看来源,可以初始化slim 3,错误显示如下:

3

我不确定是否可以在事后更改此设置而不完全替换$app = new \Slim\App(['settings' => ['displayErrorDetails' => true]]);

答案 1 :(得分:2)

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

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

$app = new \Slim\App();

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

答案 2 :(得分:2)

错误处理记录得很清楚:http://www.slimframework.com/docs/handlers/error.html

$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 :(得分:1)

错误处理是对此的最佳解决方案。您可以执行类似错误跟踪

的操作
$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 :(得分:0)

使displayErrorDetails-> true。 您会发现错误原因。

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