wordpress分页出现:Warning: Cannot modify header information

最近无意间查看网站 时,浏览了一下分类页,正常显示(也就是这个分类文章列表的第一页),然后点到下一页,正常显示,但是再点击第一页时,就出现在错误提示:

Warning: Cannot modify header information – headers already sent by (output started at /home/hotzutic/domains/shop.ssmay.com/public_html/wp-config.php:1) in/home/hotzutic/domains/shop.ssmay.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编码的文件,再试试.

造成的原因主要由以下两点:

一,在Header()函数之间输出了其他内容(一般由浏览器隐藏发送),导致了后来的Header不能再次发送新的页面类型。这可以通过开启Output_Buffering来解决,方法2,3,4就是这样。

时间: 2024-09-15 08:41:49

wordpress分页出现:Warning: Cannot modify header information的相关文章

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

今天在测试以下代码时遇到该错误: 复制代码 代码如下: session_start(); $_SESSION['username']=$username; echo "<script language='javascript'>location.href='../admin.php';</script>"; exit(); 出现错误: 复制代码 代码如下: Warning: Cannot modify header information - headers a

php出现Cannot modify header information问题的解决方法

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

PHP提示Cannot modify header information - headers already sent by解决方法_php技巧

本文实例讲述了PHP提示Cannot modify header information - headers already sent by解决方法,是进行PHP程序设计过程中经常会遇到的问题.本文对此以实例形式分析解决方法.分享给大家供大家参考.具体方法如下: 现来看看这段代码: <?php ob_start(); setcookie("username","test",time()+3600); echo "the username is:&qu

hp函数setcookie()报错:Warning: Cannot modify header

快要下班的时候,看到php讨论学习群中有朋友说设置cookie的时候.向他要了代码看了原因!报错 Warning: Cannot modify header information – headers already sent by (output started at cookie1.php:4) in cookie1.php on line 5 <?php ob_start(); setcookie("username","宋岩宾",time()+3600

PHP setcookie() cannot modify header information 的解决方法_php技巧

使用setcookie()函数时总是报以下错误: Warning: Cannot modify header information - headers already sent by.... 解决办法如下: 方法一: 在PHP里Cookie的使用是有一些限制的. 1.使用setcookie必须在<html>标签之前 2.使用setcookie之前,不可以使用echo输入内容 3.直到网页被加载完后,cookie才会出现 4.setcookie必须放到任何资料输出浏览器前,才送出 .....

Cannot modify header information错误解决方法_php技巧

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

解决”Cannot modify header information

发送头消息前不能有任何输出 任何修改或者发送HTTP头的函数都必须在 任何形式的输出 之前被调用 一些函数会修改HTTP头: header/header_remove session_start/session_regenerate_id setcookie/setrawcookie 而输出主要可能如下: 隐性输出 在 <?php 之前或者 ?> 之后的空格 UTF-8文件的 BOM头 之前出现的报错信息 显性输出  print , echo 和其它类似的输出函数 在 <?php 之间嵌

php出现Cannot modify header information问题的解决方法大全_php技巧

这样的语句,很显然,造成这个原因是因为setcookie造成的,查了一下网上,有如下的解释:      cookie本身在使用上有一些限制,例如:        1.呼叫setcookie的敘述必須放在<html>标签之前        2.呼叫setcookie之前,不可使用echo        3.直到網頁被重新載入後,cookie才會在程式中出現        4.setcookie函数必須在任何資料輸出至浏览器前,就先送出        5.--        基於上面這些限制,所以

php Cannot modify header information - headers already sent by set 解决方法

在 php 配置文件 php.ini 中将 output_buffering 设置为 On.开启即可. output_buffering = On ------------------------------- All or nothing, now or never. 有以下几种解决方法: 1. Blank lines (空白行): Make sure no blank line after <?php ... ?> of the calling php script. 检查有<?ph