使用symfony标准版2.6和FOSRestBundle,我在控制器中抛出HttpException:
throw new HttpException(525, "An error occured", $e);
在浏览器中,它显示为错误500.
例如,当使用509时,它显示为509。
怎么了?
答案 0 :(得分:0)
它似乎是symfony的一个错误。
在HttpKernel->handleException()
方法中,只设置了状态代码:
if ($e instanceof HttpExceptionInterface) {
// keep the HTTP status code and headers
$response->setStatusCode($e->getStatusCode());
然后它尝试从静态数组statusText
中检测Response::$statusText
,但未定义您的代码(530),因此它设置了一个空文本:
if (null === $text) {
$this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : '';
return $this;
}
if (false === $text) {
$this->statusText = '';
return $this;
}
我不确定根据from the RFC statusText(== reapon-phrase)是强制性的:它似乎可以是一个空格,所以HTTP/1.1 525
(有两个空格) )应该有效。
我认为当没有提供状态文本时,apache(或apache php绑定)正在修改状态代码。