在PHP中将标头设置为HTTP状态时出现分析错误
我无法找出哪里出了问题,但在下面这个简单的PHP上,我遇到了解析错误 我得到了这个错误在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
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未找到')因为您的底层服务器可能使用不同的HTTP协议,这将使您以后不必更新它
其次,我怀疑问题源于您添加到该部分的内容标题。尝试删除标题('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
查看我上面的评论,你是对的,这是我原始代码中的一些内容,一个空白