解决”Cannot modify header information
发布:smiling 来源: PHP粉丝网 添加日期:2018-10-24 13:49:22 浏览: 评论:0
发送头消息前不能有任何输出,任何修改或者发送HTTP头的函数都必须在 任何形式的输出 之前被调用,一些函数会修改HTTP头:
header/header_remove
session_start/session_regenerate_id
setcookie/setrawcookie
而输出主要可能如下:
隐性输出
在 <?php 之前或者 ?> 之后的空格
UTF-8文件的 BOM头
之前出现的报错信息
显性输出
print , echo 和其它类似的输出函数
在 <?php 之间嵌入的原始html
为什么会出现Cannot modify header information – headers already sent by错误
为了理解为什么头消息必须早于输出,我们来看看典型的HTTP响应。PHP主要是生成HTML内容,但同时也传输了一组 HTTP/CGI 头给webserver:
- HTTP/1.1 200 OK
- Powered-By: PHP/5.3.7
- Vary: DontTrackMeHere
- Content-Type: text/html; charset=utf-8
- <html><head><title>PHP page output page</title></head>
- <body><h1>Content</h1> <p>Some more output follows...</p>
- and <a href="/"> <img src=internal-icon-delayed> </a>
输出总是尾随头消息出现。PHP必须首先传头消息给网页服务器,并且只能传一个。在两个换行之后再也不能为头消息添加任何内容了。
当PHP收到第一个输出后(例:print,echo,…),它会刷新并发送设置的所有头信息。然后就可以就可以随心所欲的输出了,但是此时已经无法修改HTTP头信息了。
如何找到早于头消息的输出,报错信息中已经包含了所有相关能够定位错误的信息:
Warning: Cannot modify header information - headers already sent by (output started at /www/usr2345/htdocs/auth.php:52) in /www/usr2345/htdocs/index.php on line 100
可以看到header在文件的100行被调用。
“output started at” 则包含着更重要的信息:直接指名在auth.php的52行已经产生了输出。这就是我们需要找的。
一般情况:
print,echo
原始的HTML语句
<!DOCTYPE html>
- <?php
- //已经不能修改或发送头消息了
- <?php 之前的空格
- <?php
- //这里有一个空格
- UTF-8 BOM
这是更不易察觉,但比较普遍出现的情况。确保用你的编辑器保存文件以“UTF-8 (no BOM)”方式保存。
报错信息形如 “Unknown on line 0”
一般这样的报错说明输出来自PHP扩展或者PHP.ini设置错误信息
Tags: Cannot modify header information
相关文章
- ·PHP错误Cannot use object of type stdClass as array in错误的解决办法(2021-02-16)
- ·php header()函数设置页面Cache缓存(2014-01-06)
- ·php curl 分离header和body信息(2014-01-07)
- ·php header实现不传权重的网址跳转(2014-06-10)
- ·php Header函数实现下载短点续传程序(2014-08-28)
- ·php检测文件类型,根据文件header信息(2014-09-09)
- ·php 用header()读写csv文件方法(2014-09-11)
- ·php 常用header常用例子(2018-09-16)
- ·CURL HTTP构造请求Header实现伪造来源IP的说明(2018-09-21)
- ·php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证(2019-08-12)
- ·php使用curl获取header检测开启GZip压缩的方法(2021-10-23)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)