PHP:一个服务器接受文本后面的头,另一个不接受't


PHP: one server accepts header after text, the other doesn't

我最近在一个include文件的函数定义之间发现了一个迷路的字符,有一段时间没有注意到。

在我的开发服务器上,这不是一个明显的问题。这个字印出来后立刻被一条横幅盖住了。我都没见过。每当我到达一个头文件('Location: xxx'),它都会正常执行。

但是在生产服务器上,每当遇到重定向时,我立即开始得到"headers already sent"错误,这是最终提醒我首先要注意流浪字符的原因。(虽然花了一些时间才发现。)

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

开发在Linux下Apache 2.2.16下运行php 5.3.3。

听起来像是在开发服务器上启用了输出缓冲。(php.ini: output_buffering)应该是"off"或一些字节来缓冲

"headers already sent"警告只是一个警告。它可以通过php.ini中的error_reporting指令来抑制。检查你的日志文件,你应该得到这个警告。