Cannot modify header information解决方法

 时间:2024-09-22 01:33:34

、相信大多数人在写PHP代码的时候,都遇到过类似"Warning:Cannotsendsessioncookie–headers alreadysent…“或者”Cannotadd/modifyheaderinformation–headersalready sent…"这样的Warning提示.下面我们就来看看发生这个Warning的原因及解决方案。

方法/步骤

1、1.把错误警告全不显示,治标不治本的方法error_reporting(E_ERROR|E_PARSE);这里不要显示E_WARNING即可

2、如果没有权限编辑php.ini,如使用虚拟主机的在你的空间根目录下建立一个。htaccess文件,内容如下:AllowOverride AllPHP_FLAGoutput_bufferingOn如果还是不行,那么,再用下面的方法: 在PHP文件的最开始加入:ini_set(”output_buffering”,“1″);让这个页面打开PHP的输出缓存。

3、在PHP文件里解决ob_start()启用outputbuffering机制跷孳岔养。Outputb锇栀劐箨uffering支持多层次— 例如,可以多次调用ob_start()函数。ob_end_flush()发送outputbuffer(输出缓冲)并禁用output buffering机制。ob_end_clean()清除outputbuffer但不发送,并禁用outputbuffering。 ob_get_contents()将当前的outputbuffer返回成一个字符串。允许你处理脚本发出的任何输出。原理: output_buffering被启用时,在脚本发送输出时,PHP并不发送HTTP header。相反,它将此输出通过管道(pipe)输入到动态增加的缓存中(只能在PHP 4.0中使用,它具有中央化的输出机制)。你仍然可以修改/添加header,或者设置cookie,因为header实际上并没有发送。当全部脚本终止 时,PHP将自动发送HTTPheader到浏览器,然后再发送输出缓冲中的内容。

4、如果以上方法都不能等到满意的解决办法,请用如下办法:用notepad++等编辑器将该文件转为UTF-8withoutBOM编码的文件,再试试.

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

6、PHP文件采用UTF-8编码,由于编码不兼容(特别是通过其他编码转湍恬擒舍换过来的),产生了BOM《在UCS粕盘镱嘧编码中有一个叫做”ZEROWIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符”ZEROWIDTHNO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符”ZEROWIDTHNO-BREAKSPACE”又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZEROWIDTHNO-BREAK SPACE”的UTF-8编码是EFBBBF。所以如果接收者收到以EFBBBF开头的字节流,就知道这是UTF-8编码了。

密室逃脱19离奇失踪十二关攻略怎么找到臭味来源 一笔一笔教你画摩登女郎简笔画 信封拼音怎么拼 at the moment时态标志是什么 离婚“前”规则,是什么断送了你的婚姻
热门搜索
极品黄蜡石原石图片 电影英雄儿女 电影上甘岭 体罚打女生屁屁图片 吴世勋最新图片