知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > PHP编程

php中出现Cannot modify header information的解决办法

发布时间:2015-05-27 19:31:02作者:知识屋

某天在写程序的时候,处理出错的地址写入cookie以方便用户登陆以后可以直接跳转到要执行的这个页面,可是发现在服务器上测试时,竟然提示本地没有出现的错误: Warning: Cannot modify header information - headers already sent by.... 这样的语句,很显然,造成这个原因是因为setcookie造成的,查了一下网上,有如下的解释: cookie本身在使用上有一些限制,例如: 
1.呼叫setcookie的述必放在<html>标签之前 ;
2.呼叫setcookie之前,不可使用echo ;
3.直到被重新入後,cookie才在程式中出 ;
4.setcookie函数必在任何料出至浏览器前,就先送出 。
 
解决方法一:
基於上面些限制,所以行setcookie()函数时,常碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等,解"Cannot modify header information - headers already sent by"这个的方法是在产生cookie前,先延缓料输出至浏览器,因此,您可以在程式的最前方加上ob_start();这个函。这样就可以解决 了。 如果要加上ob_start()的话,不大可行,程序都写完了,才来改这个似乎有点郁闷.. 发现提示这个错误的时候,我就在想我本地怎么没提示这个问题呢,还以为是PHP.ini配置不一样,想想又不对,都是差不多的.. 
于是看看后面跟的那句"output started at...."意思是在setcookie之前已经在另一处有输出了,于是找到output started at后面跟的那个文件,看到第一行是空白的,然后才是<?php 这样开始,难道会是这一行的问题吗??我本地也有这一行呢,去掉,刷新再试,呵呵,果然出在这里,不再提示warning了。
解决完毕!
 
 
解决方法二:
查找网上解决此问题的方法多是一样的,不过今天又遇到了这样的问题。试过之后发现可行: 
在C盘的WINDOWS中找到php.ini 这个配置文件,然后查找一项:output_buffering将其值由原来的off改为on,重新启动Apache就ok了。
转自www.zhangchaoxie.com
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜