经过网站改版之后,这两天网站的迁移工作终于告一段落,但是昨天登录后台的时候突然发现网站日志提示“Warning: Cannot modify header information – headers already sent by (output started at /www/**/2kb.com/**/function.php:1) in /www/2kb.php on line 51”的错误信息
总结一下,出现这种情况一般都是因为程序修改过程中出现以下几个方面的错误操作导致:
原因一、UTF8编码和BOM冲突(最常见)
如果你登录后台出现类似
Warning: Cannot modify header information – headers already sent by (output started at /www/**/2kb.com/**/2kb-function.php:1) in /www/2kb-include/2kb.php on line 197 Warning: Cannot modify header information – headers already sent by (output started at /**/2kb-content/**/2kb.com/2kb-function.php:1) in /**/2kb-login.php on line 51
这些php代码错误,首先考虑是不是2kb-function.php、2kb-login.php、2kb.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();
以上就是网站出现“
Warning: Cannot modify header information – headers already sent by ……”
这样的错误的常见缘由息争决办法,假如是前期运营过程当中出现这类状况通常为文件修正或者插件不兼容产生的问题,在处理这个问题之前要明白产生问题的这段时间究竟是改动了哪里,如此才可以更快的找到出现错误的终极缘由,从而更快的处理问题。
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务