【问题标题】:PHP: one server accepts header after text, the other doesn'tPHP:一个服务器接受文本后的标题,另一个不接受
【发布时间】:2011-11-03 07:32:58
【问题描述】:

我最近在包含文件中的函数定义之间发现了一个杂散字符,并且有一段时间没有注意到它。

在我的开发服务器上,这不是一个明显的问题。字符打印并立即被横幅覆盖。我什至从未见过它。每当我来到一个标题('Location:xxx')时,它都会正常执行。

但是在生产服务器上,每当遇到重定向时,我都会立即开始收到“标头已发送”错误,这最终让我首先注意到了流浪字符。 (虽然发现它需要一些时间。)

我的问题是为什么它曾经在开发服务器上工作过?哪些 .INI 或其他设置会导致这种行为差异?是否有某种默认输出缓冲,或者这是错误报告不一致?我确信这两个环境之间存在小的配置差异,但我没有定制任何与这些行为远程相关的东西。

开发是在 Linux 上的 Apache 2.2.16 下运行 php 5.3.3。 生产在 FreeBSD 上的 Apache 2.2.20 下运行 php 5.3.6。

【问题讨论】:

    标签: php


    【解决方案1】:

    听起来您在开发服务器上启用了输出缓冲。 (php.ini: output_buffering) 应该是“关闭”或要缓冲的字节数。

    【讨论】:

    • 谢谢,就是这样。开发服务器有4096,生产服务器没有值。
    【解决方案2】:

    “标头已发送”警告就是 - 警告。它可以被 php.ini 中的error_reporting 指令抑制。检查您的日志文件,您应该会收到该警告。

    【讨论】:

    • 感谢您的好建议。在这种情况下,错误实际上并没有发生在开发服务器上,因为它被默认配置为 4K 输出缓冲。
    猜你喜欢
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多