【发布时间】:2014-04-24 21:15:43
【问题描述】:
我正在使用 PHP 5.4.21 的 IIS 7 服务器上的 PHP 脚本生成 XML 数据。我注意到数据没有通过 XML 验证,因为看似随机的标签会从它们中删除它们的“
这是导致错误的代码示例,因此您可以更好地了解正在发生的事情。
<?php
print "<?xml version=\"1.0\"?>\n";
print "<appguide>\n";
print "\t<wheels>\n";
for ($i = 0; $i < 80; $i++) {
print "\t\t<wheel>\n";
print "\t\t\t<someone>{$i}</someone>\n";
print "\t\t\t<set>{$i}</set>\n";
print "\t\t\t<us>{$i}</us>\n";
print "\t\t\t<up>{$i}</up>\n";
print "\t\t\t<the>{$i}</the>\n";
print "\t\t\t<bomb>{$i}</bomb>\n";
print "\t\t</wheel>\n";
}
print "\t</wheels>\n";
print "</appguide>\n";
?>
这应该只是在“
<wheel>
<someone>30</someone>
<set>30set>
<us>30</us>
<up>30</up>
<the>30</the>
<bomb>30</bomb>
</wheel>
如您所见,在循环的第 31 次迭代中,“”中缺少“”。即使我不使用 PHP 生成 XML 数据并将预期的输出粘贴到文件中(与 XML 文件相同),它仍然会缺少括号。
那么有人知道是什么原因造成的吗?!
为询问 HTTP 响应标头的人更新:
实时服务器
Content-Length:10326
Content-Type:text/html
Date:Tue, 18 Mar 2014 22:35:47 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.4.21
X-Powered-By:ASP.NET
本地服务器
Connection:Keep-Alive
Content-Type:text/html; charset=ISO-8859-1
Date:Tue, 18 Mar 2014 22:35:19 GMT
Keep-Alive:timeout=5, max=99
Server:Apache/2.2.11 (Win32) PHP/5.3.1
Transfer-Encoding:chunked
X-Powered-By:PHP/5.3.1
【问题讨论】:
-
很奇怪。使用您的代码对我来说效果很好。 (PHP 5.5.3-1ubuntu2.2)
-
是的。就像我在原帖中所说的那样,“在我的本地 WAMP 服务器上运行相同的 PHP 脚本运行良好”。因此,我发布了 IIS 和 PHP 版本(与您的测试都不匹配)。
-
两台服务器的 HTTP 响应头是否相同?
-
你确定你的 php 结束标签后没有空格吗?或者可能在实际文件中的任何包含文件中?
-
关闭 PHP 标记后没有任何内容,尽管我不确定为什么会导致这种情况。至于 HTTP 响应头,我用它们更新了原始帖子。