如果页面出现Warning: Cannot modify header information ? headers already sent by这问题,一般是页面头你在session之前有输出了,下面一起来看看wordpress页面出现此问题解决办法.
最近无意间查看网站时,浏览了一下分类页,正常显示,也就是这个分类文章列表的第一页,然后点到下一页,正常显示,但是再点击第一页时,就出现在错误提示:
Warning:Cannot modify header information – headers already sent by (output started at /home/hotzutic/domains/Vevb.com/public_html/wp-config.php:1) in/home/hotzutic/domains/Vevb.com/public_html/wp-includes/pluggable.php on line 1121
按照上面的代码提示,还以为是wordpress程序下的wp-includes/pluggable.php 文件有问题,于是我重新上传了一下相关文件,但是随后,问题依旧,这是怎么回事呢?
于是,在网上查了下,看有没有碰到与我一样的问题,呵呵,还真有类似情况的发生,他们说是代码utf-8带bom的问题,让wp-config.php文件的第一行有空行,才导致这样的错误提示,我仔细看了一下代码,可能还真是,因为错误代码中也提到了这个文件的第一行:public_html/wp-config.php:1
于是我果断地通过 EditPlus 编辑器把wp-config.php文件代码转换成无bom格式的,再查看网站,正常了.
补充:
看了一些网上的方法也没解决,最后在php.ini配置output_buffering默认为4096就没有遇到这个错误了:
output_buffering设置说明:
Off:表示关闭PHP输出缓存
On:打开无限大的输出缓存
4096:打开大小为4096Byte的输出缓存
默认情况下,php buffer是开启的,而且该buffer默认值是4096,即4kb,你可以通过在php.ini配置文件中找到output_buffering配置.当echo,print等输出用户数据的时候,输出数据都会写入到php output_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。你也可以通过ob_start()手动激活php output_buffering机制,使得即便输出超过了4kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大,只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器.
下面我们来看看解决方案:
1. 把错误警告全不显示,治标不治本的方法
error_reporting(E_ERROR | E_PARSE);这里不要显示E_WARNING即可.
2. 编辑php.ini
打开php.ini文件,找到output_buffering = 改为on或者任何数字.
3. 如果没有权限编辑php.ini,如使用虚拟主机的
在你的空间根目录下建立一个.htaccess文件,内容如下:
AllowOverride AllPHP_FLAG output_buffering On
如果还是不行,那么,再用下面的方法:
在PHP文件的最开始加入:ini_set(”output_buffering”, “1〃);
让这个页面打开PHP的输出缓存.
4. 在PHP文件里解决
ob_start()
启用output buffering机制,Output buffering支持多层次 — 例如,可以多次调用 ob_start() 函数。
ob_end_flush()
发送output buffer(输出缓冲)并禁用output buffering机制。
ob_end_clean()
清除output buffer但不发送,并禁用output buffering。
ob_get_contents()
将当前的output buffer返回成一个字符串,允许你处理脚本发出的任何输出.
原理:output_buffering被启用时,在脚本发送输出时,PHP并不发送HTTP header,相反,它将此输出通过管道(pipe)输入到动态增加的缓存中,只能在PHP 4.0中使用,它具有中央化的输出机制,你仍然可以修改/添加header,或者设置cookie,因为header实际上并没有发送,当全部脚本终止时,PHP将自动发送HTTP header到浏览器,然后再发送输出缓冲中的内容.
5. 如果以上方法都不能等到满意的解决办法,请用如下办法:
用notepad++等编辑器将该文件转为UTF-8 without BOM编码的文件,再试试.
新闻热点
疑难解答
图片精选