完美解决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中创建并处理图象
Oct 09 PHP
无数据库的详细域名查询程序PHP版(5)
Oct 09 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
php写的简易聊天室代码
Jun 04 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
PHP多维数组转一维数组的简单实现方法
Dec 23 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
php实现小程序支付完整版
Oct 09 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编程中字符串处理的5个技巧小结
2007/11/13 PHP
How do I change MySQL timezone?
2008/03/26 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python判断完全平方数的方法
2018/11/13 Python
python协程之动态添加任务的方法
2019/02/19 Python
pycharm创建一个python包方法图解
2019/04/10 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
电子商务专业自我鉴定
2013/12/18 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
消防标语大全
2014/06/07 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
结婚老公保证书
2015/02/26 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python