2012-05-02

修改wordpress的PHP文件后因添加BOM导致错误SAE_Warning: Cannot modify header information


修改wordpress文件后发生错误:撰写新文章,点击发布,显示“SAE_Warning: Cannot modify header information - headers already sent by (output started at /data1/www/htdocs/848/snowson/1/wp-config.php:1) in wp-includes/pluggable.php on line 934”

原因:
编辑wordpress的PHP文件后,保存时使它添加了一个Unicode签名(BOM),而wordpress使用的PHP文件不支持BOM。

解决方法:
1.使用微软记事本时,保存文件时选用ANSI编码
2.使用其它高级的编辑器时,在保存为UTF-8编码时,可以选择去掉勾选“添加一个Unicode签名(BOM)”

注意:
其实这些都是某些文件在保存为 UTF-8 格式时候没有注意 BOM 的问题,根本解决方法就是不要使用太落后的编辑器,一般使用 Windows 自带的记事本程序编辑的 PHP 文件基本都会自动加上 BOM 这东西,若是想在本地编辑 PHP 文件,还是建议使用先进点的编辑器,像是 EditPlus 之类的就行。http://note.imdoraemon.cn/archives/141

另外,据说,
这种情况也可能是因为“Blank lines (空白行)”
“Make sure no blank line after of the calling php script.
检查 后面有没有空白行,特别是include或者require的文件。不少问题是这些空白行导致的。”
http://www.bytea.net/content/view/229/40.html
---------------------------------------------
PHP教程:Unicode 签名(BOM)问题
什么是 Unicode 签名 (BOM)?
BOM (Byte Order Mark) 是 UTF 编码方案里用于标识编码的标准标记。位于文本文件开头的 2 到 4 个字节,可将文件标识为 Unicode,还标识后面字节的字节顺序。由于 UTF-8 没有字节顺序,因此可以选择添加 UTF-8 BOM。对于 UTF-16 和 UTF-32,这是必需的。
由于这个 BOM 的存在,PHP 会误认为文本内容已经输出,因此会对页面渲染造成影响。据说 PHP6 中已经修复这个问题。
如何防止 Unicode 签名 (BOM) 对页面渲染的影响?
以 Dreamweaver 为例,保存 utf-8 编码的文档时,不勾选 "包括 Unicode 签名 (BOM)" 选项即可。
2010-04-19 21:40:38  来源:芒果
http://www.webjx.com/php/2010-04-19/23242.html

问:在安装或使用过程中出现白屏或者Warning: Cannot modify header information – headers already by (********)错误,为什么?
答:其实这些都是某些文件在保存为 UTF-8 格式时候没有注意 BOM 的问题,根本解决方法就是不要使用太落后的编辑器,一般使用 Windows 自带的记事本程序编辑的 PHP 文件基本都会自动加上 BOM 这东西,若是想在本地编辑 PHP 文件,还是建议使用先进点的编辑器,像是 EditPlus 之类的就行。关于BOM的介绍详细可参考
UTF-8 编码的文件中,BOM 占三个字节。如果记事本把一个文本文件另存为 UTF-8 编码方式之后,再用先进的 UltraEdit 打开此文件,然后切换到十六进制编辑状态就可以看到开头的 FFFE 了。这是个标识 UTF-8 编码文件的好办法,软件通过 BOM 来识别这个文件是否是 UTF-8 编码,很多软件还要求读入的文件必须带 BOM,不幸的是,还是有很多软件不能识别 BOM,最不幸的是,PHP 就不支持 BOM,于是乎,如果是 WordPress 主题出现 BOM,将会导致这三个字符直接输出,造成页面上方有一个小空行,如果是 WordPress 插件出现 BOM,将直接导致页面变白或者出现类似于的错误。建议重新用原版本覆盖你用记事本修改过的文件。
原文链接:http://www.chengdu-seo.cn/tag/wordpress%E5%AE%89%E8%A3%85/


“将wp-config.php的编码修改成ANSI”,据了解utf-8编码文件含有的bom,但是php4,5都是不支持bom的,所以出错~最终用“将wp-config.php的编码修改成ANSI”的方法解决问题。
打开wp-config.php,看到另存为的编码是utf-8,我重新另存为ANSI格式。这样就OK了。
冰鱼客 http://guailele.blog.51cto.com/1156442/831276

查了一下午, 网上有好多网友遇到类似的、一样的问题,答案、方法几乎都千篇一律,说修改php.ini文件或者说是代码编码问题,什么如果使用UTF-8格式的,要保存问无BOM的UTF-8格式。
这些都试过还是无用,最后在查看所用模板文件夹中的functions.php文件时发现了问题所在。上图是functions.php文件的结束行,最后一个php标识符“?>”后有两空白行215、216,问题就是它们所致。删除即可!
如果还是出现“Warning: Cannot modify header information – headers already sent by”这样的提示,不要紧,它提示的错误个数是不是和刚才不同了,你再仔细找找functions.php文件的开头处“。
QQ:262817214 yangbys http://www.update8.com/Web/CMS/21714.html

没有评论: