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


Posted in PHP onSeptember 27, 2014

今天在测试以下代码时遇到该错误:

session_start();

$_SESSION['username']=$username;

echo "<script language='javascript'>location.href='../admin.php';</script>";

exit();

出现错误:

Warning: Cannot modify header information - headers already sent by...

看了一些网上的方法也没解决,最后在php.ini配置output_buffering默认为4096就没有遇到这个错误了:

output_buffering设置说明:

    Off: 表示关闭PHP输出缓存
    On: 打开无限大的输出缓存
    4096: 打开大小为4096Byte的输出缓存

默认情况下,php buffer是开启的,而且该buffer默认值是4096,即4kb。你可以通过在php.ini配置文件中找到output_buffering配置.当echo,print等输出用户数据的时候,输出数据都会写入到php output_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。你也可以通过ob_start()手动激活php output_buffering机制,使得即便输出超过了4kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大。只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。

关于output_buffering详细介绍可以参考:

补充:当然你也可以通过去除BOM解决这个问题,建议以UTF-8无BOM格式编码。感谢 @ihipop 童鞋
关于BOM,简单的来说,软件通过BOM来识别这个文件是否是UTF-8编码。在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。

其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效,所以你也可能遇到如下错误:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at E:\web\index.php:1) in E:\web\functions\sessions.php on line 39
PHP 相关文章推荐
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php之XML转数组函数的详解
Jun 07 PHP
解析PHP的session过期设置
Jun 29 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
初识ThinkPHP控制器
Apr 07 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP中的output_buffering详细介绍
Sep 27 #PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 #PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 #PHP
PHP会话控制:Session与Cookie详解
Sep 27 #PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 #PHP
php实现获取及设置用户访问页面语言类
Sep 24 #PHP
php实现的zip文件内容比较类
Sep 24 #PHP
You might like
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
cookie的secure属性详解
2015/04/08 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
python实现简单登陆流程的方法
2018/04/22 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Python登录系统界面实现详解
2019/06/25 Python
python os模块在系统管理中的应用
2020/06/22 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
软件项目实施计划书
2014/05/02 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
平遥古城导游词
2015/02/03 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
python基础之模块的导入
2021/10/24 Python