Slim 3 黑洞错误
Slim 3 blackholing errors
我有一个小型 slim 3 应用程序,当我抛出异常时,slim 只显示一般错误消息:
Slim Application Error
A website error has occurred. Sorry for the temporary inconvenience.
在 slim 2 中你可以做这样的事情来打开调试模式给你回溯等:
$app->config('debug', true);
slim 3 好像没有。此外,它似乎覆盖了我的异常和错误处理程序。
我怎样才能让 slim 吐出错误,或者至少调用我的错误处理程序(将输出通过管道传输到 kint 以获取调试信息)
查看源代码,可以像这样初始化 slim 3 并显示错误:
$app = new \Slim\App(['settings' => ['displayErrorDetails' => true]]);
我不确定是否可以在事后更改此设置而不完全替换 errorHandler
。
要显示默认异常处理程序的完整堆栈跟踪,请使用 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
}
错误处理有很好的记录: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!');
};
};
错误处理是最好的解决方案。您可以执行一些操作,例如查看 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()));
};
};
设置 displayErrorDetails->true。
你会找到错误的原因。
$config = ['settings' => [
'addContentLengthHeader' => true,
'displayErrorDetails' => true
]];
$app = new \Slim\App($config)
我有一个小型 slim 3 应用程序,当我抛出异常时,slim 只显示一般错误消息:
Slim Application Error
A website error has occurred. Sorry for the temporary inconvenience.
在 slim 2 中你可以做这样的事情来打开调试模式给你回溯等:
$app->config('debug', true);
slim 3 好像没有。此外,它似乎覆盖了我的异常和错误处理程序。
我怎样才能让 slim 吐出错误,或者至少调用我的错误处理程序(将输出通过管道传输到 kint 以获取调试信息)
查看源代码,可以像这样初始化 slim 3 并显示错误:
$app = new \Slim\App(['settings' => ['displayErrorDetails' => true]]);
我不确定是否可以在事后更改此设置而不完全替换 errorHandler
。
要显示默认异常处理程序的完整堆栈跟踪,请使用 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
}
错误处理有很好的记录: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!');
};
};
错误处理是最好的解决方案。您可以执行一些操作,例如查看 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()));
};
};
设置 displayErrorDetails->true。 你会找到错误的原因。
$config = ['settings' => [
'addContentLengthHeader' => true,
'displayErrorDetails' => true
]];
$app = new \Slim\App($config)