不能修改报头信息——NOT已经发送的报头将带E_ALL error_reporting显示


Cannot modify header information - headers already sent by NOT be displayed with E_ALL error_reporting

我没有输出缓冲和display_errors是on和error_reporting是E_ALL,但在我的服务器上php警告不显示。

我期待的警告是:

Cannot modify header information - headers already sent by " when it is expected.

没有显示错误的服务器是Mac OS X php 5.4.24。显示美分的服务器是php 5.3.27。都有E_ALL错误报告

应该在两个服务器上引起错误的代码:

echo json_encode(array('success'=>true,'message'=>$success_message,'person_id'=>$employee_id,'redirect_code'=>$redirect_code));
$this->session->set_flashdata('manage_success_message', $success_message);
我的问题是:

为什么我没有收到Mac OS X机器的警告?但是我收到了一个警告。php版本略有不同,但我不认为这种行为会改变。

我在php.ini中修改了以下内容,并能够在我的mac服务器上发生问题:

来自:

output_buffering = 4096

:

output_buffering = Off

似乎就是这个问题

检查<?php开头标记前是否有空格、回车或制表符。

在两台机器上,试着用

确认你关于错误报告设置的理论

echo ini_get ( 'display_errors' );

如果您的Mac和CentOS机器上的环境在配置上不相同,则有许多合理的原因导致差异…从错误抑制到操作系统处理EOL字符的方式