完美解决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 相关文章推荐
图形数字验证代码
Oct 09 PHP
php5数字型字符串加解密代码
Apr 24 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
php模板函数 正则实现代码
Oct 15 PHP
深入php var_dump()函数的详解
Jun 05 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
PHP错误机制知识汇总
Mar 24 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP多文件上传类实例
2015/03/07 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
Add a Table to a Word Document
2007/06/15 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
vue实现拖拽效果
2019/12/23 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
python实现中文转换url编码的方法
2016/06/14 Python
python中的字典操作及字典函数
2018/01/03 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
详解如何减少python内存的消耗
2019/08/09 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
小学数学课后反思
2014/04/23 职场文书
迎新晚会策划方案
2014/06/13 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
单位工作证明
2014/10/07 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书