完美解决PHP中的Cannot modify header information 问题


Posted in PHP onAugust 12, 2013

我就遇到这种问题,网上找到这个解决的方案,就收藏下
写PHP的朋友们肯定遇到过这样一个问题:通过header函数改变http协议头的时候,会出现一个类似下面格式的warning:

Warning: Cannot modify header information - headers already sent by

这是为什么呢?因为在使用header函数之前,您不能输出任何东西,包括用echo或var_dump等输出函数的输出,还有在<?php之前的空格。不过有的时候,我们并没有输出任何东西,却还是会出现这个错误,这是因为我们的文件包含了BOM签名,我们必须把它去掉。下面我们就来讨论这个问题。

请看测试代码:

<?php
header("content-type:text/html;charset=utf-8");
die();
?>

这段代码就是简单的header一下,在<?php之前也没有任何输出,也没有空格,但是网页里还是提示了Cannot modify header information的警告信息。这说明,在<?php之前还有内容,只是编辑器没有显示出来。

我们用ultraEdit打开这个文件,切换到16进制,可以看到,在文本的开头,有EFBBBF,之后才是3C 3F 70 68 70 ( <?php ),说明,在<?php之前,确实存在着输出信息,因此,在修改header的时候,会得到警告信息。

完美解决PHP中的Cannot modify header information 问题

这个EFBBBF是什么东西呢?它的名字叫BOM,Byte Order Mark,是在Windows下的一个约定,用于标记文本是否是Unicode。记事本程序就是通过这三个字节来判断文件是ANSI还是Unicode。

知道了问题发生的原因,下面,我们想办法把BOM去掉。用Dreamweaver打开这个php页面,然后进入页面设置(按Ctrl+J),弹出以下窗口:
    完美解决PHP中的Cannot modify header information 问题

取消选择“包括Unicode签名(BOM)”,确定就可以了。现在,我们再用UltraEdit打开看这个文件的16进制内容,如下图

完美解决PHP中的Cannot modify header information 问题

可以看到,现在BOM信息已经没有了,文件直接以3C3F70开头了。

最后,我们刷新一下浏览器,发现现在已经没有Warning提示了,问题解决。

PHP 相关文章推荐
PHP开启gzip页面压缩实例代码
Mar 11 PHP
ezSQL PHP数据库操作类库
May 16 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
深入分析PHP优化及注意事项
Jul 04 PHP
php将html转为图片的实现方法
May 19 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 #PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 #PHP
php实现MD5加密16位(不要默认的32位)
Aug 12 #PHP
php中的Base62类(适用于数值转字符串)
Aug 12 #PHP
PHP实现把数字ID转字母ID
Aug 12 #PHP
PHP计算2点经纬度之间的距离代码
Aug 12 #PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 #PHP
You might like
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
用PHP来写记数器(详细介绍)
2006/10/09 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
关于JavaScript中的关联数组分析
2013/04/09 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
python 多个参数不为空校验方法
2019/02/14 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
python能否java成为主流语言吗
2020/06/22 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
个人担保书范文
2014/05/20 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
端午节寄语2015
2015/03/23 职场文书