WordPress后台白屏问题

马上准备停止折腾WP了,So……准备优化一下就仍在那里,但问题就这样接踵而来,就来总结一篇吧。

从linux主机上移植下来的整个博客居然登陆后台是白屏(本地是winxp+apache+mysql+php)。怎么折腾都不好,据说是UTF-8编码BOM问题,叙述如下(转载): Windows下对于UTF-8编码的文本文件在被用默认的记事本打开后,在保存的时候,Windows会自动在文件的头部添加三个隐藏的字符0xEF 0xBB 0xBF,也就是BOM(Byte Order Mark,即字节流标记),它的作用是让应用程序识别该文件的编码格式。众所周知PHP最常用的架构为LAMP(Linux+Apache+MySQL+PHP),并不是为Windows平台设计的,最初语言设计时并为考虑到Windows下的BOM问题,所以PHP在执行的时候并不会忽略BOM,在读取、包含或者引用这些文件的时候,PHP会将BOM的三个隐藏字符当作文件正文开头的一部分。根据脚本语言的特点,这串字符将会被显示出来,由此造成即使页面的top padding设置为0,也无法让整个网页紧贴浏览器顶部,因为在HTML的开头有这3个字符。但这并不是最让人头痛的问题,受到Cookie送出机制的限制,在这些开头已经有BOM的文件中,Cookie无法正确送出(因为在Cookie送出前PHP已经送出了文件头),所以WordPress登入和登出功能失效。并且一切依赖于Cookie、Session实现的功能全部无效,无法保存、更新任何设置。
所以在Windows上用PHP进行WordPress开发时,务必记住不要用记事本编辑文件,而要使用不会为文件乱加BOM的编辑工具,如Dreamware、Notepad2等。而已经遇到白屏问题的:1、如果只是更改了WordPress的安装配置文件wp-config.php而导致白屏的,只要将从WP官方下载的压缩包中的wp-config.php用正确的编辑器打开编辑后,上传替换空间中的版本后即可正常登陆和使用。2、如果是自己开发的主题存在BOM问题的,只要将自己的主题先删除,用WordPress默认的主题先登陆后台,然后在后台对默认主题进行编辑,将自己主题的代码复制粘贴到默认主题相应文件中去,就可以了!(相关插件解决方法类似)
看了以上原因,我发现很有可能是因为过年的时候在亲戚家没有使用Notepad2所产生的,当然也有可能是以前就带有的。我采用了第二种方法,无奈的只能把power的主题在修改一遍。要确保在Notepad2的文件菜单下的编码选项为UTF-8(无签名),换行编码为Unix(LF)。虽然不知道有没有用,但是我觉得这是必要的。我直接在原先错误的主题上修改这些选项没有作用,所以只能重复劳动,一点一点对照着修改过的主题再改一遍,好在不需要太多时间。

PS:之所以要把博客移植到本地,是因为我准备要优化一下表wp-option,想先在本地测试,现在已经测试成功,详见《彻底清理wp-option

3 Comments
  1. 我的问题和你的比较像,但我还是没能解决,我的是前台白屏。重新安装两个wp还是不行,在火狐上的提示是:未收到数据。服务器未发送任何数据,因此无法载入该网页。
    能进入后台,文章全都在。
    我好几个独立博客中了木马,修复之后重装wp但出现了白屏,再次重装仍然是白屏。我重装主题是初始的,插件也没有,数据库也修复了一下,为什么还是白屏呢。头疼了好几天了啊。关于白屏网上能找到的文章不多啊,看了不少我还是解决不了啊。

    1. 看看主题文件是否有问题,不如删了重新上传,也许就会好,wp也重装下,或者升级版本。插件全关,默认主题,应该没什么问题。要不就是伪静态?看看是不是被动了什么。

Leave a Reply

Time limit is exhausted. Please reload the CAPTCHA.