在PHP中将标头设置为HTTP状态时出现分析错误

在PHP中将标头设置为HTTP状态时出现分析错误,php,Php,我无法找出哪里出了问题,但在下面这个简单的PHP上,我遇到了解析错误 我得到了这个错误 Parse error: syntax error, unexpected T_STRING in E:\Server\htdocs\myframework\library\api\rest-test\index.php on line 3 关于这个代码 <?php header('HTTP/1.1 404 Not Found');  header('Content-type: application

我无法找出哪里出了问题,但在下面这个简单的PHP上,我遇到了解析错误

我得到了这个错误

Parse error: syntax error, unexpected T_STRING in E:\Server\htdocs\myframework\library\api\rest-test\index.php on line 3
关于这个代码

<?php
header('HTTP/1.1 404 Not Found'); 
header('Content-type: application/json');

$data = 'testing dgdg dfgdf gdf';// my code that returns the appropriate data;

echo json_encode($data);

?>

然而,当我调出
头('HTTP/1.1 404未找到')标题的code>('HTTP/1.1200ok')然后错误消失。请帮助我理解这一点。使用XAMPP在Windows上进行测试


已解决


我的原始代码在
头的末尾有一个空格(“HTTP/1.1 404未找到”)行,删除该空间,现在一切正常。

如果使用FCGI,能否将404行更改为
标题(“状态:404未找到”)。也许这有帮助。

首先,你应该考虑使用<代码>头($yServer [ Server协议] ]。“404未找到”;<代码>而不是
头('HTTP/1.1 404未找到')
其次,我怀疑问题源于您添加到该部分的内容标题。尝试删除
标题('Content-type:application/json')并查看它是否解决了您的问题。

Nope


错误来自您的原始代码,而不是测试用例,并且您未能在测试用例中重现该问题。所以我们无法识别它…

我不明白你的错误。我在windows和linux上测试了你的代码。两个测试都正常工作,没有任何错误。如果您尝试在没有回音的情况下发送标头,会怎么样?如果您尝试标题(“状态:404未找到”);会怎么样?您使用的是哪一个php版本?使用php版本5.3.6时,似乎我使用的是FastCGI,甚至不知道它是
标题(“状态:404未找到”)确实有效。奇怪的是,当我将原始标题上的404改为200时,它是如何工作的?您提供的代码永远不会导致“意外的t_字符串”错误。修复:奇怪的是,
header('Content-type:application/json')行末尾有一个空格导致了它,我删除了这个奇怪的EOL空间,效果很好。最后,我尝试删除了所有东西,除了
头('HTTP/1.1 404 Not Found')行,错误变成了关于下线的一些东西,然后我意识到在那行后面有一个空格,删除了那个空格,现在它工作了。我从php文档中复制了这一行,所以一定与linux和windows有关。如果在发送字符后尝试执行另一个header()条目,则发送的任何空白或字符不属于正确的标题序列,都会将其打断。谢谢,这是非常好的了解,事实上我知道这一点,但只有1个空格很难发现。我喜欢使用
$\u SERVER[“SERVER\u PROTOCOL
查看我上面的评论,你是对的,这是我原始代码中的一些内容,一个空白