【问题标题】:PHP 5.4.21 on IIS 7 dropping “<” and “</” in tagsIIS 7 上的 PHP 5.4.21 在标签中删除“<”和“</”
【发布时间】: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";
?>

这应该只是在“”部分中打印相同的数据 80 次。但是在 IIS7/PHP5.4.2 机器上查看它的源代码会出现这样的情况:

<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 响应头,我用它们更新了原始帖子。

标签: php xml iis iis-7


【解决方案1】:

有时最奇怪的错误与编码有关。 IIS7在这个独特的地方可能有一些特殊的秘密含义

t>30</s

组合 - 它只在循环中发生一次,在 31 次迭代中。

我无法访问 IIS,但作为测试,我会尝试暂时重命名

<set>

标记并查看是否有任何变化。

【讨论】:

  • 我也想过这个问题。您可以更改标签以说出任何内容,但如果字符数相同,则错误将出现在完全相同的位置。
  • 对不起,这应该是评论而不是答案,太晚了,无法更改。还有 2 件事浮现在脑海中:1) 您是否尝试过使用 echo 而不是 print -- 或 heredoc? 2)工作机器和非工作机器上的php.ini设置是否相同?
猜你喜欢
  • 2013-01-06
  • 2011-01-06
  • 2013-08-19
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2016-04-01
  • 1970-01-01
相关资源
最近更新 更多