可能前两天给网站搬家的时候文件传输错误,导致这两天WordPress后台总是提示“Warning: Cannot modify header information……”之类的错误。在Google大学里找到了解决办法。总结了一个比较普遍适用的问题解决方案。
实际上网上有不少关于此类问题的文章,可是每个人遇到的错误的文件并不一样,从而导致网上的类似文章大同小异却又并不一致。如果你的问题恰巧不跟这些文章里的错误提示完全一致,也许就不容易找到答案了。我的就是这样。
一、问题描述¶
通过分析错误提示并结合自己的实际情况,我发现引起这类错误的原因可能有2 3个:
- 插件问题。网上的提示是挨个儿的禁用插件以找出问题。
- PHP文件的开头(
<?php
之前),或者,结尾(?>
之后,如果该php文件结尾没有这个符号,就表示结尾部分没问题)存在空格或者空行。 - php文件编码格式造成。据 tuzhu 反映,php文件编码格式如果不是 ANSI,也有可能导致该现象出现。我猜测,可能是他使用了 Windows 默认的记事本来编辑 php 文件,导致保存的文件为“带 BOM 标记的 UTF-8”格式,如果保存为“不带 BOM 标记的 UTF-8”格式也许不存在这样的问题。该猜测未经验证,如果你恰好遇到这样的现象,可以尝试一下。欢迎反馈!关于 BOM 标记,可以参考这篇文章。
并且,如果属于情况 1 的话,也多半是因为该插件的某个文件中出现了情况 2 里所说的问题。所以要解决问题还得按照情况 2 的思路来。
所以,问题的关键在于如何确定是哪个php文件里存在情况 2 所描述的问题,知道了这个,问题就解决了。
注:当然还可能有一种情况,那就是你的php文件被注入了恶意代码。这个就很复杂了,本文不作介绍。可以参考WordPress支持论坛上的帖子来解决。如果真有这样的事情,我很乐意提供帮助,你可以随时与我联系。
二、确定出现问题的文件¶
在出现这样的错误提示时,我们可以发现提示中通常包含了某些文件的名称和路径,可能不止一个文件。我们就可以根据这些信息来检查相关的PHP文件。
例如,
Warning: Cannot modify header information – headers already sent by (output started at //home/htdocs/wordpress/wp-config.php:1) in /home/htdocs/wordpress/wp-login.php on line 12
这个例子中出现了2个文件,一个是 wp-config.php,一个是 wp-login.php。我们需要一一检查。而我这次,出问题的文件是位于 wp-includes 中的 classes.php 文件。可惜我没有把错误信息保存下来。
三、解决方法¶
解决方法很简单,只要使用编辑器将这两种情况(之前和之后,或者仅仅之前)中的空格或空行删除就可以了。编辑器可以使用 Notepad++,尽量不要使用 Windows 自带的 notepad(记事本)。
notepad++ 是一个免费的文本编辑器,内置中文语言,安装的时候选择一下就可以了。可以从简介最新版安装。
1、按照 二 中的方法确定文件,从服务器上下载到本地;
2、用编辑器打开分别检查,如下图,
黄色字体标记的地方就是如果有空格或空行就会出错的地方,删除这样的空格或空行。
3、将修改后的文件保存,上传到服务器并替换原来的文件。
如果你在这样操作之后还有问题,可以给我留言,我会第一时间帮你分析。
文中例子和图片均来自HONGKIAT.COM,转载请一并注明。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/wordpress-error-warning-cannot-modify-header-information/>。转载请保留此信息及相应链接。