解决WordPress错误:Warning: Cannot modify header information

可能前两天给网站搬家的时候文件传输错误,导致这两天WordPress后台总是提示“Warning: Cannot modify header information……”之类的错误。在Google大学里找到了解决办法。总结了一个比较普遍适用的问题解决方案。

实际上网上有不少关于此类问题的文章,可是每个人遇到的错误的文件并不一样,从而导致网上的类似文章大同小异却又并不一致。如果你的问题恰巧不跟这些文章里的错误提示完全一致,也许就不容易找到答案了。我的就是这样。

一、问题描述

通过分析错误提示并结合自己的实际情况,我发现引起这类错误的原因可能有2 3个:

  1. 插件问题。网上的提示是挨个儿的禁用插件以找出问题。
  2. PHP文件的开头(<?php之前),或者,结尾(?>之后,如果该php文件结尾没有这个符号,就表示结尾部分没问题)存在空格或者空行
  3. 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/>。转载请保留此信息及相应链接。

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>