【问题标题】:PHP headers not being sent to browserPHP标头未发送到浏览器
【发布时间】:2010-02-12 09:53:41
【问题描述】:

我的本​​地测试服务器上的 PHP 和 Apache 有一个很奇怪的问题。由于某种原因,它一直停止向浏览器发送标头(我很确定这就是问题所在)。

这不是旧的“输出已发送”的情况,因为它工作正常,有问题,在我重新安装 Apache 后消失了,现在又回来了。会话似乎也中断了。它还没有给出“已发送标头”的错误,而且代码可以在实时站点上运行。

也不是浏览器的问题,因为我尝试了不同的浏览器和不同的机器,都出现了同样的问题。

即使像<?php header ('Location: http://www.yahoo.com'); ?> 这样的愚蠢的东西也不起作用。

我在 Windows 上运行 wampserver(最新版本)。明信片上的答案。

【问题讨论】:

  • 检查您的 Apache 错误日志,您有没有发现任何异常情况? (还有“明信片上的答案”???)
  • 服务器中的日志没有异常。 :(
  • 使用 firebug for firefox 之类的工具获取更多信息,该工具将帮助您将标头发送到浏览器。
  • 可能是您开始 PHP 标记或 BOM 字符之前的一个字符。请检查并告知我们(但这应该会触发“标头已发送错误”) - 确保您启用了错误报告并显示了警告
  • 这不是错误 - 我已经检查了每个可能的地方和代码,并按照标准进行了通知,但没有任何迹象。

标签: php windows apache header


【解决方案1】:

即使是像<?php header ('Location: http://www.yahoo.com'); ?> 这样的愚蠢的东西也不起作用。

试试这个:

<?php header('Location: http://www.yahoo.com'); exit; ?>

【讨论】:

    【解决方案2】:

    如果您在 2010 年 2 月使用 Xdebug,它曾经有一个生成的 HTTP 标头的已知问题:

    此问题现已修复,因此请切换到较新版本或完全删除扩展。

    【讨论】:

    • 是的。也许这就是问题所在。我已经取消了那个安装,所以我无法检查,但如果它再次发生,我会尝试删除 Xdebug 以看到它修复它。
    【解决方案3】:

    首先,检查您的 PHP.INI 是否将 'display_errors' 设置为 'On',并且当您使用它时,请确保 'error_reporting' 设置为 'E_ALL & ~E_NOTICE'。没有这些,即使发生错误,您也不会看到错误。

    其次,确保在同一个文件中将“output_buffering”设置为“Off”。以防万一。

    最后,提到了检查您的 Apache 日志。检查您的 PHP 错误日志(通常是另一个文件)也很重要。

    【讨论】:

    • 我有完整的警告(和通知),没有警报。
    • 你也有 display_errors 吗?无论您设置显示什么,都必须明确设置它以实际查看这些错误。另外,您是否检查了 PHP 错误日志而不是 Apache 错误日志?
    【解决方案4】:

    重新安装修复了它,很奇怪。

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2012-10-27
      • 2019-08-19
      • 2016-02-04
      相关资源
      最近更新 更多