我正在使用slim版本3.8,我想禁用outputBuffering并显示所有错误:以下是我的简单Hello World程序。
require_once(dir.'/vendor/autoload.php');
$configuration = [
'settings' => [
'displayErrorDetails' => true,
'outputBuffering' => false,
],
];
$app = new \Slim\App($configuration);
// Add route callbacks
$app->get('/', function ($request, $response, $args) {
echo "here";
return $response->withStatus(200)->write('Hello World!');
});
// Run application
$app->run();如果我注释掉echo“here”,那么它工作得很好。但是这段代码抛出了exception - 500内部错误,说“输出缓冲区中有意外的数据。可能在开始之前有字符”。有人能告诉我这里出了什么问题吗?
发布于 2017-05-04 14:17:00
它的运行情况与预期相符。您需要在$configuration中将addContentLengthHeader => false添加到您的settings密钥。
将outputBuffering设置为false意味着响应对象不知道您回显的任何数据。因此,当自动添加content-length报头时,它会注意到不匹配,并且您会得到“output buffer中的意外数据”错误。因此,您需要禁用自动设置内容类型头部。
https://stackoverflow.com/questions/43678898
复制相似问题