我知道这个问题之前已经发布过很多次了,但无论如何我都无法找到一个好的答案,因为该错误的行为并不完全符合其应有的行为。
你看,我有类似这样的代码:
<?php
include("banner.php");
include("menu.php");
print "<div class=\"wrapper\">";
if(true) header("Location:index.php");
else print "Hello World";
print "</div>";
include("footer.php");
?>
banner.php
看起来像这样:
<div id=banner><a href=index.php><img src=img/banner.png></a></div>
menu.php
看起来像这样:
<ul class="menu">
<li class="dropdown">Menu
<ul>
<a href="test1.php?id=<?php print $id; ?>"><li>Item 1</li></a>
<a href="test2.php?"><li>Item </li></a>
<a href="test3.php"><li>Item 3</li></a>
<a href="test4.php?id=<?php print $id; ?>"><li>Item 4</li></a>
</ul>
</li>
</ul>
请注意,在menu.php
.
如果我运行第一段代码,我会得到错误Warning: Cannot modify header information - headers already sent by (output started at /var/www/menu.php:10) in /var/www/test.php on line 5
。第 10menu.php
行是最后一行。如果我从代码中完全删除菜单并离开banner.php
,则代码可以正常工作。我觉得这很令人困惑,因为banner.php
它也提供了输出,就像print "<div class=\"wrapper\">";
包含菜单之后的那一行一样。
我的问题很简单:为什么会menu.php
触发错误,而banner.php
不会?