完美解决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自动跳转中英文页面
Jul 29 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
学习php笔记 字符串处理
Oct 19 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
Linux编译升级php的详细方法
Nov 04 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
php cookie用户登录的详解及实例代码
Jan 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
浅析PHP水印技术
2007/02/14 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php获取微信openid方法总结
2019/10/10 PHP
JQuery循环滚动图片代码
2011/12/08 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
webpack5 联邦模块介绍详解
2020/07/08 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
python使用thrift教程的方法示例
2019/03/21 Python
利用python实现周期财务统计可视化
2019/08/25 Python
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
教师批评与自我批评
2014/10/15 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书