如何解决PHP 出现Warning: Cannot modify header information错误?

其实,出现这种情况一般都是因为程序修改过程中出现以下几个方面的错误操作导致:

原因一、UTF8编码和BOM冲突(最常见)

如果你登录后台出现类似Warning: Cannot modify header information – headers already sent by (output started at /www/wp-content/themes/pozhejun/function.php:1) in /www/wp-includes/pluggable.php on line 897

Warning: Cannot modify header information – headers already sent by (output started at /www/wp-content/themes/pozhejun/function.php:1) in /www/wp-login.php on line 21

这些php代码错误,首先考虑是不是function.php、wp-login.php、pluggable.php 这三个PHP文件的编码出现了问题。一般很有可能是用txt文件编辑过这几个报错的文件导致UTF8编码和BOM冲突。

解决方法:使用Notepad++、UltraEdit、DW等编辑器编辑文件,在“修改”菜单里面选择“标题/编码”,将文件编码修改为原本的gkb或者utf-8格式。当然你也可以把文件另存为,选ANSI保存。

原因二:程序文件<?php之前或者之后有空格(最常见)

解决方法:无论是程序本身echo出来的、被include 进来的程序echo的还是php代码之外的html存在空格它们统统都是输出。所以,要检查下出错的fuction.php等文件中的<?php..?>是不是因为空格或者换行导致的,特别是include或者require的文件。删除空格就能够解决,这也是最常见的报错原因之一。

原因三:插件兼容问题(常见)

如果是安装WordPress插件或者自己写的程序出现以上问题,除了以上两种可能,还有可能是setcookie的问题。

解决办法:在输出内容之前,产生cookie,可以在程序的最上方加入函数 ob_start(); 把下面函数加到文件的开头。

<?php ob_start (); ?>

原因四:php.ini配置问题

解决办法:打开 php.ini 然后把 output_buffering 设为 on ,重启appache即可。这种方法开启了所有php程序的输出缓存,这样做可能影响php执行效率,这取决于服务器的性能和代码的复杂度。

原因五:header后加exit()

解决方法:在header后加上exit();

header ("Location: xxx");

exit();

以上就是WordPress出现“Warning: Cannot modify header information – headers already sent by ……”这样的错误的常见原因和解决方法,如果是后期运营过程中出现这种情况一般是文件修改或者插件不兼容出现的问题,在解决这个问题之前要清楚出现问题的这段时间到底是修改了什么,这样才能快速的找到出现错误的最终原因,从而快速的解决问题。

时间: 11-07

如何解决PHP 出现Warning: Cannot modify header information错误?的相关文章

PHP错误Warning: Cannot modify header information - headers already sent by解决方法

这篇文章主要介绍了PHP错误Warning: Cannot modify header information - headers already sent by解决方法,需要的朋友可以参考下 今天在测试以下代码时遇到该错误: 复制代码代码如下: session_start();$_SESSION['username']=$username;echo "<script language='javascript'>location.href='../admin.php';</sc

出现Warning: Cannot modify header information - headers already sent by ..的解决办法

这个错误的出现,原因是: 出这个错误是因为 header('Content-Type:text/html;charset= UTF-8');发送头之前不能有任何输出. 检查了下我的输出,错误信息如下: Warning: Cannot modify header information - headers already sent by (output started at /data/home/qxu1084910324/htdocs/bw_feature.php:1) in /data/hom

Warning: Cannot modify header information - headers already sent by (output started at

一般来说在header函数前不能输出html内容,类似的还有setcookie() 和 session 函数,这些函数需要在输出流中增加消息头部信息.如果在header()执行之前有echo等语句,当后面遇到header()时,就会报出 “Warning: Cannot modify header information - headers already sent by ....”错误.就是说在这些函数的前面不能有任何文字.空行.回车等,而且最好在header()函数后加上exit()函数.例

php5.6,Ajax报错,Warning: Cannot modify header information - headers already sent in Unknown on line 0

php5.6ajax报错 Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unkno

关于报错:Warning: Cannot modify header information - headers already sent by (output started at

8月5日,第一个项目即将完成,测试时,发现登录功能会出现小问题:记住密码的时候会报错 Warning: Cannot modify header information - headers already sent by (output started at 经过再三在百度上查询,终于查到错误的关键原因:[setcookie之前不可以有html标签内容].导致出现这种错误的方式有很多种,但惟独这种解释最让我理解. (因为百度知道的内容不可以复制了,只能贴出地址,有详细解释)地址[http://z

PHP程序错误Warning: Cannot modify header information - headers already sent by ....

在使用phpmywind程序时出现的问题Warning: Cannot modify header information - headers already sent by .... 检查了许久,居然是编码的问题 请将单纯的utf-8格式改为utf-8无BOM编码格式 在NOTEPAD++的格式菜单可以修改 或者其它工具的

Warning: Cannot modify header information原因及解决方案

相信大多数人在写PHP代码的时候,都遇到过类似"Warning: Cannot send session cookie – headers already sent-"或者"Cannot add/modify header information – headers already sent-"这样的Warning提示.下面我们就来看看发生这个Warning的原因及解决方案. 函数 header(),setcookie() 和 session 函数需要在输出流中增加

Cannot modify header information问题的解决方法(php)

我做了一个统一的出错提示函数,在函数执行里面,先处理出错的地址写入cookie以方便用户登陆以后可以直接跳转到要执行的这个页面,可是发现在服务器上测试时,竟然提示本地没有出现的错误: Warning: Cannot modify header information - headers already sent by....这样的语句,很显然,造成这个原因是因为setcookie造成的,查了一下网上,有如下的解释: cookie本身在使用上有一些限制,例如:1.呼叫setcookie的敘述必須放

PHP:Cannot modify header information - headers already sent by出错解决

<?php ob_start();setcookie("username","test",time()+3600);echo "the username is:".$HTTP_COOKIE_VARS["username"]."\n";echo "the username is:".$_COOKIE["username"]."\n";print