【发布时间】:2012-08-08 19:42:59
【问题描述】:
“无法修改标头信息 - 标头已发送”
自从将我的 MacBook Pro 更新到 OS X Mountain Lion 后,我的 localhost 网站一直出现故障。
我的大部分(如果不是全部)header("Location: ./xxx.php"); 重定向都没有工作。他们在 Lion 工作,所以我假设 Mountain Lion 是导致此问题的原因,而不是我的代码。如果我关闭内置服务器并启用/使用 MAMP,也会发生错误。
这让我相信,Mountain Lion 整体处理头球的方式存在问题。如果这个错误实际上是我的代码,那么为什么它在 Lion 中起作用?如果是这种情况,我会假设 Mountain Lion 以更严格的方式读取 PHP 代码。此外,然后我制作了一个带有标头重定向的简单 test.php 脚本,以查看标头是否正常工作。事实证明,当我在 Safari 中打开该脚本时,它毫无问题地重定向了我。这个错误对我来说似乎很奇怪,我想要一些反馈。谢谢。
【问题讨论】:
-
一旦发送输出,您就不能发送标头。错误说明了一切
-
“请记住,必须在发送任何实际输出之前调用 header()”php.net/manual/en/function.header.php
-
也许您在 PHP 文件中意外添加了一个空格作为第一个字符或类似的东西,这会破坏它。
-
抓取 Firebug 或其他一些调试工具。我认为可能是新的 php 配置导致在您到达 header() 代码之前发送一些东西,所以如果您知道它是什么,那么您将有更好的机会找到导致它的原因。
-
“那为什么它在 LION 中工作??” - 你重新安装了 MAMP 吗? MAMP 是否加载与以前相同的 php.ini?您是否可能在更新之前编辑过文件并且实际上之前没有对其进行测试?你真的不能责怪操作系统更新破坏了该级别的非操作系统应用程序。
标签: php http-headers