完美解决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实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php内嵌函数用法实例
Mar 20 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
php实现图片按比例截取的方法
Feb 06 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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实现插入排序?
2013/04/10 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
PHP解决中文乱码
2017/04/28 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
做网页的一些技巧
2007/02/01 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
Angular 项目实现国际化的方法
2018/01/08 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
Python序列操作之进阶篇
2016/12/08 Python
python用户管理系统
2018/03/13 Python
如何清空python的变量
2020/07/05 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
英语自我评价范文
2014/01/24 职场文书
销售内勤岗位职责
2014/04/15 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
创先争优一句话承诺
2014/05/29 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
迟到检讨书
2015/01/26 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python