完美解决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 相关文章推荐
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
php遍历目录viewDir函数
Dec 15 PHP
PHP源代码数组统计count分析
Aug 02 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
php上传文件常见问题总结
Feb 03 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
教你php如何实现验证码
Jan 20 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP中的use关键字及文件的加载详解
Nov 28 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 保留小数点
2009/04/21 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php中apc缓存使用示例
2013/12/25 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
python实现ipsec开权限实例
2014/11/11 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
Python numpy 常用函数总结
2017/12/07 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
python里 super类的工作原理详解
2019/06/19 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
《圆明园的毁灭》教学反思
2014/02/28 职场文书
社区矫正工作方案
2014/06/04 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers