请php熟练者略过此文。
既然你打算继续往下看,说明你不熟悉php或者正在入门,那么我就用最简单(不会假装高深的搬出http 协议中header的解释,其实我也不会)的说说出现这样问题的原因:
当php程序出现cannot modify header information错误的时候,从cannot modify header information的字面不难理解,表示程序无法发送header信息,一般的出错信息完整的应该是类似Warning: Cannot modify header information – headers already sent by的提示。那么下面几种情况会出现Cannot modify header information:
- 单独的php文件session_start()之前有echo print等等输出;
- 在setcookie之前有echo print等等输出;
- 在set cookie和session_start之前有包含的文件,而这个包含的文件有输出;
- 在set cookie和session_start之前有包含的文件,而这个包含的文件为html或者含有html(包括<?php ?>外面的空格);
- 程序文件<?php之前不小心打了一个空格;
- 带有bom的utf8编码文件,因为有bom,所有在<?php之前其实有编辑器看不到的输出;
总之,出现这个问题的根源只有一个:那就是在session_start和setcookie之前有输出的都会出现Cannot modify header information的错误。无论是程序本身echo出来的、被include 进来的程序echo的还是php代码之外的html存在空格它们统统都是输出。
所以你若是使用wordpress,第一次安装进入后台,发现Cannot modify header information之类的错误,首先要要检查的就是wp-config.php文件中<?php之前和?>之后是不是不小心打了换行或者空格符号?是的话,则删除之。检查wp-config.php是不是utf8编码?管他是不是,用编辑器(下载一个editplus的试用版本)打开,另存为的时候,选择UTF-8再次覆盖保存即可。







