在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”前缀,看来以后在慎用记事本来修改页面文件了。