当前位置: 首页 > 图文教程 > 网络编程 > PHP > php出现Cannot modify header information问题的解决方法大全

PHP
php中目录,文件操作详谈
理解PHP5中static和const关键字的区别
php中支持多种编码的中文字符串截取函数!
关于BIG5-HKSCS的解决方法
自动生成文章摘要的代码[PHP 版本]
完美解决dedecms中的[html][/html]和[code][/code]问题
不错的dedecms修改实用集锦
PHP的分页功能
dedecms中显示数字验证码的修改方法
dedecms中常见问题修改方法总结
用PHP写的MySQL数据库用户认证系统代码
收集的PHP中与数组相关的函数
PHP中动态显示签名和ip原理
实现dedecms全站URL静态化改造的代码
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
在任意字符集下正常显示网页的方法一
在任意字符集下正常显示网页的方法二(续)
经典的PHPer为什么被认为是草根?
dedecms系统常用术语汇总
一篇入门的php Class 文章

PHP 中的 php出现Cannot modify header information问题的解决方法大全


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 68 ::
收藏到网摘: n/a

我做了一个统一的出错提示函数,在函数执行里面,先处理出错的地址写入cookie以方便用户登陆以后可以直接跳转到要执行的这个页面,可是发现在服务器上测试时,竟然提示本地没有出现的错误: Warning: Cannot modify header information - headers already sent by.... 这样的语句,很显然,造成这个原因是因为setcookie造成的,查了一下网上,有如下的解释: cookie本身在使用上有一些限制,例如:
1.呼叫setcookie的敘述必須放在<html>标签之前
2.呼叫setcookie之前,不可使用echo
3.直到網頁被重新載入後,cookie才會在程式中出現
4.setcookie函数必須在任何資料輸出至浏览器前,就先送出
5.……
基於上面這些限制,所以執行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了。