"Cannot modify header information"的解决方法

在PHP空间部署wordpress时遇到这条警告:"Warning: Cannot modify header information - headers already sent by ....",网上搜索解决办法,有不少解决方案,这里说说我用到的方法。

PHP代码里经常用到include或者requir来包含文件,注意检查这些被包含文件<?php ... ?> 后面没有空白行。不少问题是这些空白行导致的。

有些情况空白不会引起这个问题,我发现php文件如果存成UTF-8也会因为第一行头两个字节不是以“<?”开头的,所以导致这个问题,解决办法是用记事本打开,然后另存成ANSI文件即可。

如果文件内部有双字节的字符,比如汉字等,直接用记事本把UTF-8编码的文件转存成ANSI会导致浏览器里打开的汉字是乱码,解决办法是还是保存成UTF-8格式,不过需要用第三方工具把文件前的UTF-8编码特征字符去掉,比如用DreamWeaver打开,点Modify菜单里的Page Properties子菜单,选中“Title/Encoding”,然后把Encoding改成“Unicode(UTF-8)”,把"Include Unicode Signature(BOM)"前的钩去掉,最后保存即可。也可以用UltraEdit打开文件,然后切换到十六进制模式,把前三个字节“EF BB BF”剪切掉,最后保存即可。

我之所以碰到这种情况,是因为我图方便,改用记事本打开源码进行编辑,保存后文件就会自动加上“EF BB BF”前缀,看来以后在慎用记事本来修改页面文件了。

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。