【问题标题】:PHP header() gets sent after ouputPHP header() 在输出后被发送
【发布时间】:2011-04-15 01:44:05
【问题描述】:

直到最近,我的 LAMP 仍按预期工作,并根据文档使用 PHP 的 header() 进行重定向。不知何故,这改变了。问题可以看这里:

<html>
<head>
<title> BLAH </title>
</head>

<body>
<p> TEXT </p>
<?php
 echo "BLAH BLAH BLAH";
 sleep(10);
 header("Location: http://example.com");
?>
</body>
</html>

据我所知,重定向不应该发生 - 但它确实发生了。我尝试回显,添加 HTML,等待避免任何可能的竞争条件,但都无济于事。当我访问此页面时,没有显示任何输出,10 秒后我被重定向。

我不是很幸运地在网上搜索,因为大多数人都有完全相反的问题,我也没有在服务器日志中找到任何有用的东西。我没有进行任何配置更改或包更新。我问的人也很疑惑。

我在 CentOS 虚拟机上运行 PHP 5 和 Apache 2。

P.S.:我在这里的第一个问题,但是阅读这个网站对我有很多帮助,我就是喜欢它:)。

【问题讨论】:

  • 似乎启用了输出缓冲。检查你的 php.ini
  • 尝试使用flush() 而不是sleep(10)。请注意,Internet Explorer 在收到 1024 个字节后开始呈现。

标签: php apache header send


【解决方案1】:

谢谢拉乌尔,就是这样。

我完全忘记了在 VM 之前我一直在另一台 Debian 机器上工作。当然,它的默认 php.ini 与 CentOS 的不同。 Debian 有 output_buffering = Off 而 CentOS 设置为 4096。 此外,在 VM 上禁用了 PHP 错误。

再次感谢,伙计们,知道这不是晦涩的语言怪癖或难以捉摸的设计缺陷,这让我非常放心。干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多