PHP 错误:Cannot send session cookie – headers already sent by ..解决办法

php session 错误 1. 错误提示 Warning: Cannot send session cookie – headers already sent Warning: Cannot send session cache limiter – headers already sent 分析及解决办法 这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行 立即下载
This news item was posted in PHP Code, PHP Framwork category and has 3 Comments so far.

有时候PHP总是出现以下类似问题:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output ....... on line 67

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (…….. on line 67

此问题非常诡异,网上也有大把的解决方式,下面有转载,本人的解决方法也很诡异,把出错的include 文件用写字板新建,copy源内容,竟然神奇的好了。我相信是 DW 的问题。不深究了,转贴:

Warning Cannot send session cookie – headers already sent…问题的解决(PHP的UTF-8 BOM引起的问题)

习惯了用edit plus进行php编程,所以有时会出现一些不为人知的错误,很麻烦;
近日,在开发项目时,某些页面总是出现以下问题:

Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at E:\web\Apache2\htdocs\index.php:1) in E:\web\Apache2\htdocs\functions\sessions.php on line 67

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at E:\web\Apache2\htdocs\index.php:1) in E:\web\Apache2\htdocs\functions\sessions.php on line 67
经过详细搜索,得到以下原因:
我的edit plus中设置了默认的编码为utf-8,且UTF_8签名为:总是添加签名;
于是尝试以下操作:
在edit plus 的工具->参数->文件->UTF_8签名一项中,更改选项”总是添加签名”为”总是移除签名”,然后打开index.php文件,并重新另存为,重新运行脚本,终于可以正常了;

另外,在网上找到了两篇比较有参考价值的文章,希望有人碰到此种情况时可以完美解决!

一个UTF-8 BOM引起的PHP的诡异问题2007-06-30 14:29一、

//—a.php

将a.php保存为utf-8格式,结果用浏览器访问这个php文件,就会出现如下错误:
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started

at ×××.php:1) in ×××on line 2

这个问题很常见,多数是因为在session_start之前有输出了!对于老鸟来说,这个错误基本上不会发生,但是如果你是用DW或是editplus等编

辑器写代码的,连高手也有可能发生这个错误!

如上面的提示:在第×××文件的第1行,×××文件的第2行,随你看,这两处是不会有任何输出语句的,很奇怪还是会出错,为什么呢
原来:

Unicode 签名 (BOM) 可在文档中包括字节顺序标记 (BOM)。BOM 是位于文本文件开头的 2 到 4 个字节,可将文件标识为 Unicode,如果是这

样,还标识后面字节的字节顺序。由于 UTF-8 没有字节顺序,因此可以选择添加 UTF-8 BOM。对于 UTF-16 和 UTF-32,这是必需的。
看见没有!如果选了这个选项,就会在页面的最前面输出2到4个字节!

而 session_start() 要求之前没有任何输出给客户端浏览器

二、

另外还有一个地方可能会出错,例如:
/–a.php–
?>
空行
空行

如果你包含a.php之后再来也会有这个问题,通常的建议是经常被包含的文件末尾不要有?>

又如:
在调用Session_Start()之前不能有任何输出.例如下面是错
误的.
==========================================
1行
2行
==========================================

已经经过试验,事实确实是如此诡异。
三、

session_start()
set_cookie()
header()
前面都加上@应该可以抑制这个警告。

四、

在editplus编辑器中,如果先把utf-8的a.php文件转换为gb2312或是其他,然后再转换为utf-8这样就可以成功访问了,也就是说文件开头的

BOM被去掉了,这时候的UTF-8 是无BOM类型的了

PHP-关于utf-8编码问题引起的session_start()错误

2007-02-15 14:55:01

大中小
采用默认的gb2312编码时,兼容Ansi编码,文件头部无任何附加信息,此时session_start()可以正常工作。
采用utf编码时,大部分编辑器都会在在文件头部附加一个BOM块,我的EditPlus附加的是FF FE,用16进制编辑器
可以很清楚的看到。这样,当调用session_start()时,实际上已经向浏览器输出两个字节,只不过是不可见字符浏
览器中出现如下警告:
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at ………………….

解决方法:
1、手动去掉BOM块,可以在16进制编辑器如UltraEdit中编辑,或者采用编辑器自带的功能,好的编辑器一般提供选择是否去除BOM块。
2、自己编写脚本更正,这要针对不同的编辑器,BOM头定义:
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00

解决方法

在进行PHP session 操作的时候,如果出现:Warning: Cannot send session cookie – headers already sent…”或者“Cannot add header information – headers already sent…”

只需对php.ini中的Output_buffering进行设置,默认值为no,将这个修改为1就可以了。

You can leave a response, or trackback from your own site.
嵌入式开发中Tab与空格混用的危害与统一规范实践 在软件工程中,代码格式一致性是保障可读性与团队协作效率的基础。从原理上看,制表符(Tab)与空格(Space)在存储与显示机制上存在本质差异:Tab是控制字符,其显示宽度取决于编辑器设置;空格则是固定宽度的字符。这种差异导致混用时会引发代码对齐错乱、版本控制冲突及跨平台兼容性问题,严重影响工程的可维护性。尤其在嵌入式开发领域,资源受限环境与高可靠性要求使得统一的编码规范更为关键。通过配置编辑器、集成clang-format等自动化工具,可以强制实现缩进风格的一致性,从而提升代码质量与团队协作效率。本文聚焦于 阅读详情

相关推荐

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2601

session_start(): Cannot send session cookie - headers already sent

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by 配置php网站的时候,经常会在页首出现Warning: session_start() [function.session-start]: Cannot send sessio...

weixin_43702272的博客 529

tree_sitter多语言解析器配置实战指南

本文是一份详细的Tree-sitter多语言解析器配置实战指南。文章从零开始,手把手指导如何搭建Python环境、安装指定版本的tree-sitter库、下载并编译多种语言的语法规则,最终构建一个统一的解析器库。通过实战代码演示了如何初始化解析器、解析代码并遍历语法树,旨在帮助开发者高效处理多语言代码分析任务,并分享了高级技巧与常见问题排坑经验。

weixin_29245767的博客 267

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent

今天在配置php网站的时候,经常会在页首出现Warning: session_start() [function.session-start]: Cannot send session cache limiter,也不影响页面打开。 就到百度中查找了一下,实际解决了问题,先记录下来,以备后患,呵呵 Warning: session_start() [function.session

打杂人-aerchi 2222

SpaceMesh Mining 教程

當參與Spacemesh的用戶在完成P盤工作後需要完成兩個部分工作:PoET+PoST,這兩部分均是在不同的規定時間完成,具體可參考後續的時間表。註意!只有PoET和PoST均完成的用戶才可以獲得收益。Spacemesh相關P盤教程:說明:1.Spacemesh每個紀元epoch周期為14天,在8月7日完成PoET的將在8月20日完成PoST,收益將在8月25日後發放(之後用戶收益將每隔14天發放一次) 後續PoET時間為8月7日+N14 **後續PoST時間為8月20日+N。

Yc Chan 的个人博客 1045

【实战指南】基于YOLOv11的肺结节检测系统开发与优化(LUNA2016数据集)

本文提供了基于YOLOv11模型和LUNA2016数据集开发肺结节检测系统的完整实战指南。详细介绍了从环境搭建、数据预处理、模型训练与优化,到构建Web应用系统的全流程,旨在帮助开发者快速掌握医疗影像AI项目的核心开发技能。

weixin_29031057的博客 140

Warning: session_start() [function.session-start]: Cannot send session cookie解决办法

在很多时间使用了session就会出来如下提示了, Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/u114264/include/db_mysql教程.class.php教程:1) in...

weixin_33869377的博客 389

硕士论文排版救星:用Mathtype一键搞定所有公式格式(附样式预设文件)

本文详细介绍了如何使用Mathtype的样式预设和批量格式化功能,快速统一硕士论文中的公式格式。通过创建标准样式预设文件和一键批量处理,解决公式字体、大小、间距不统一的问题,确保符合学术规范要求,大幅提升论文排版效率。

weixin_30772105的博客 938

php 打印cookie报错,php报错:Cannot send session cookie – headers already sent by的解决方法...

错误消息:Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output ....... on line 67Warning: session_start() [function.session-start]: Cannot send se...

weixin_35920379的博客 581

Vector CANoe VT2516A实战:从硬件连接到CAPL脚本的完整配置指南

本文详细介绍了Vector CANoe VT2516A板卡从硬件连接到CAPL脚本编写的完整配置指南。涵盖硬件接线原则、VT System配置避坑技巧、系统变量创建规范、可视化Panel设计、CAPL脚本调试及典型故障排查案例,帮助工程师快速掌握VT2516A板卡的应用实践,提升汽车电子测试效率。

weixin_30608503的博客 255

[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)

[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341) Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,在GPL2.0及更新协议下发布。Drupal在某些情况下,通过文件模块或者子系统上传恶意文件触发XSS漏洞。

qq_51577576的博客 2208

免排查代码 完美解决 Cannot send session cookie – headers already sent by .. SESSION新手问题

不需要排查代码解决session_start前面不允许输出的问题 引入 近日闲来无事,用原生写了一个小项目,没想到平时用管框架,到了php原生连一个session的调用发起都存在编写细节问题。 调用session_start()时抛出了Cannot send session cookie – headers already sent 的错误 寻找解决方案 在网上搜搜搜了一大堆,都是老生常谈的在se...

LYJSpeedX独家技术分享 3451

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

如何解决"Cannot send session cache limiter – headers already sent "错误

session_start(); 今天接手了一个非常老的项目,只能采用php5.2及以下版本才行。然而在运行之初就碰到一个问题: 在网上找了下,介绍很详细(以下转载自博客园赢风 ): 如果使用基于cookie的session(cookie-based sessions),那么在使用Session_start()之前浏览器不能有任何输出,否则会出现"Cannot send session cac...

码农Robin的博客 1260

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

php header already sent by...报错处理方法 Cannot send session cookie – headers already sent by

php Cannot modify header information - headers already sent by (output started.....)报错处理方法 近几天,对刚完成的一个小站,在本地测试没有任何问题,本地所用的开发环境为:wamp 可上传至服务器时,却出现的了: Warning: Cannot modify header information - headers already sent by (output started.....) 打开网站...

tongluren381的博客 908

session或cookie失效,Cannot send session cookie – headers already sent by ..

This news item was posted in PHP Code, PHP Framwork category and has 3 Comments so far. 有时候PHP总是出现以下类似问题: Warning: session_start() [function.session-start]: Cannot send session cookie - headers alre...

y18749247391的博客 1932

如何解决”Cannot send session cache limiter – headers already sent “错误

如果使用基于cookie的session(cookie-based sessions),那么在使用Session_start()之前浏览器不能有任何输出,否则会出现”Cannot send session cache limiter – headers already sent”错误,所以首先要确保Session_start()在开始输出之前执行,一般直接放到php文件的最上方. 如果Sessi

Robote Blog 2634

Warning: Cannot send session cookie – headers already sent…

相信大多数人在写PHP代码的时候,都遇到过类似"Warning: Cannot send session cookie – headers already sent…“或者”Cannot add/modify header information – headers already sent…"这样的Warning提示.下面我们就来看看发生这个Warning的原因及解决方案。 函数 head...

weixin_30457065的博客 154

Warning session_start() Cannot send session cookie

Warning Cannot send session cookie - headers already sent...问题的解决(PHP的UTF-8 BOM引起的问题) 习惯了用edit plus进行php编程,所以有时会出现一些不为人知的错误,很麻烦;。 近日,在开发项目时,某些页面总是出现以下问题: Warning: session_start() [function.session-s...

weixin_34248849的博客 261

Warning: session_start(): Cannot send session cookie - headers already sent by

1.问题: Warning: session_start(): Cannot sendsession cookie - headers already sent by (output started at D:\Apache\Apache24\htdocs\www\index.php:5)in D:\Apache\Apache24\htdocs\www\inc\conn.php on line 

geek-wk 1395

Warning:session_start():Cannot send session cache limiter - headers already sent by

Cannot send session cache limiter - headers already sent错误解决方法 是PHP版本的问题。 低了!!!      调高点就行。 网上长篇大论一点用都没。!!

u012062810的专栏 649

php cookie start,php – 警告:session_start():无法发送会话cookie – 已发送的头文件(输出以...

参见英文答案 >“Cannot send session cache limiter – headers already sent”1登录页面中出现以下警告:它在localhost中工作,但不在远程主机中警告:session_start()[function.session-start]:无法发送会话cookie – 已...

weixin_34620780的博客 271

php session不可用,php使用session时出现的报错

一、PHP使用session时出现的报错如下:Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent解决方法:1、php.ini中的output_buffering=off 改成output_buffering=40962、php.ini中...

weixin_35697297的博客 351

php session_start()报错 解决办法

 这段时间开始搞PHP了,第一次用SESSION,就遇到了这个问题,错误提示:Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent于是上网找了一下,网上的高手们列出了各种解决办法,这里汇总一下:1.php.ini中的output_

小逗狗的专栏 2341

关于php开发过程当中遇到的Cannot send session cookie - headers already sent by 问题

问题: Cannot send session cookie - headers already sent by     有几个可能导致这个问题,一是编码采用了utf-8 并且用了bom的,那么,请把bom去除。 方法是另存为utf-8,不带bom的文件格式。   但是有人发现自己是ANSI的文件格式,那么,请检查php.ini文件中,是否有开启:   session.save_

虚拟等待的专栏 3691

解决PHP "headers already sent"错误

发送或者修改 HTTP 头信息的方法必须在任何输出被输出之前被调用。否则调用将会出错:Warning: Cannot modify header information - headers already sent (output started at script:line)这些方法可以修改(modify) HTTP 头信息:header / header_removesession_start...

qq_41750040的博客 1万+
上一篇: Invalid command 'RewriteEngine'解决办法
下一篇: 如何解决”Cannot send session cache limiter – headers already sent “错误
luomingchu
博客等级 码龄20年 24粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值