我的代码如下:
return Response::json($message,401);它总是在我的服务器上返回200 OK状态。
奇怪的是,它在本地主机(PHP5.5)中返回了正确的状态代码,但是当我部署到web服务器(PHP5.4.30)时,它总是返回200个状态代码。
当我追溯代码时,我发现了这个文件中的一个不同之处:
\vendor\symfony\http-foundation\Symfony\Component\HttpFoundation\Response.php
public function sendHeaders() {
// headers have already been sent by the developer
if (headers_sent()) {
return $this;
}
......
}headers_sent() ->在本地主机上返回false,但在web服务器上返回true。
更新:
当我试图按下面的方式修改代码时,Json不仅引起了问题:
http_response_code(401);
echo $message;它仍然将始终返回200代码。但如果我在laravel之外运行脚本,如下所示:
<?php
http_response_code(401);
echo $message;
?>它很好用。
这个问题是因为PHP版本的不同造成的吗?如果是的话,有没有办法解决这个问题?
谢谢。
发布于 2014-08-06 21:10:04
确保您的服务器满足Laravel要求:
apt-get install php5-json)。apt-get install php5-mcrypt)。app/storage目录。还要确保您的PHP文件中没有尾随的PHP结束标记(?>),因为众所周知,它们会导致headers already sent问题。
https://stackoverflow.com/questions/25168717
复制相似问题