Cannot modify header information问题的解决方法(php)

我做了一个统一的出错提示函数,在函数执行里面,先处理出错的地址写入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了 
解决完毕!
解决方法二:
查找网上解决此问题的方法多是一样的,不过今天又遇到了这样的问题。试过之后发现可行:
找到php.ini 这个配置文件,然后查找一项:output_buffering将其值由原来的off改为on,重新启动Apache就ok了。

PS:有时,你再SAE建立php应用的时候,如果你的跳转以及setcookie不被支持,那么也会出现这种情况。需要遵循SAE开发文档规范。

时间: 2024-10-13 12:37:12

Cannot modify header information问题的解决方法(php)的相关文章

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

这篇文章主要介绍了PHP错误Warning: Cannot modify header information - headers already sent by解决方法,需要的朋友可以参考下 今天在测试以下代码时遇到该错误: 复制代码代码如下: session_start();$_SESSION['username']=$username;echo "<script language='javascript'>location.href='../admin.php';</sc

如何解决PHP 出现Warning: Cannot modify header information错误?

其实,出现这种情况一般都是因为程序修改过程中出现以下几个方面的错误操作导致: 原因一.UTF8编码和BOM冲突(最常见) 如果你登录后台出现类似Warning: Cannot modify header information – headers already sent by (output started at /www/wp-content/themes/pozhejun/function.php:1) in /www/wp-includes/pluggable.php on line 8

PHP:Cannot modify header information - headers already sent by出错解决

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

出现Warning: Cannot modify header information - headers already sent by ..的解决办法

这个错误的出现,原因是: 出这个错误是因为 header('Content-Type:text/html;charset= UTF-8');发送头之前不能有任何输出. 检查了下我的输出,错误信息如下: Warning: Cannot modify header information - headers already sent by (output started at /data/home/qxu1084910324/htdocs/bw_feature.php:1) in /data/hom

cannot modify header information 关于实现widget页面跳转的问题

查找网上解决此问题的方法多是一样的,不过今天又遇到了这样的问题.试过之后发现可行: 在C盘的WINDOWS或者你的PHP文件夹中找到php.ini 这个配置文件,然后查找一项:output_buffering将其值由原来的off改为on,重新启动Apache就ok了. 详细出处参考:http://www.jb51.net/article/14108.htm http://blog.chinaunix.net/uid-122937-id-142881.html 函数header--页面跳转 can

Warning: Cannot modify header information原因及解决方案

相信大多数人在写PHP代码的时候,都遇到过类似"Warning: Cannot send session cookie – headers already sent-"或者"Cannot add/modify header information – headers already sent-"这样的Warning提示.下面我们就来看看发生这个Warning的原因及解决方案. 函数 header(),setcookie() 和 session 函数需要在输出流中增加

Cannot modify header information - headers already sent by出错的原因

<?php ob_start(); setcookie("username","送家",time()+3600); echo "the username is:".$HTTP_COOKIE_VARS["username"]."\n"; echo "the username is:".$_COOKIE["username"]."\n"; pri

php5.6,Ajax报错,Warning: Cannot modify header information - headers already sent in Unknown on line 0

php5.6ajax报错 Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unkno

php Cannot modify header information 和 Cannot send session cache limiter

在php开发中遇到两个问题 (1)Cannot send session cache limiter 解决方式  找到 php.ini        修改php.ini中的 session.auto_start = 0 为 session.auto_start = 1 (2)Cannot modify header information 解决方式  找到 php.ini    修改php.ini中的 output_buffering = on php Cannot modify header