我有一个小巧的3应用程序,当我抛出异常苗条时,只显示一般错误消息:
超薄应用程序错误
发生网站错误。很抱歉暂时不便。
在slim 2中你可以做这样的事情来打开调试模式,让你回溯等等:
$app->config('debug', true);
在苗条3中,似乎并不是一个。此外,它似乎覆盖了我的异常和错误处理程序。
如何解决错误,或者至少调用我的错误处理程序(将输出通过管道传递给kint以获取调试信息)
答案 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)