本文主要介绍PHP错误警告:不能修改头信息——headers ready由solution发送,有需要的朋友可以参考一下。
今天测试以下代码时遇到此错误:
复制代码如下:
session_start()。
$ _ SESSION[' username ']=$ username;
echo ' script language=' JavaScript ' location . href='./admin . PHP ';/script ';
exit();
出现错误:
复制代码如下:
警告:无法修改标题信息-标题已由发送.
看了一些网上的方法都没解决。最后,我在php.ini中将output_buffering默认配置为4096时没有遇到这个错误:
Output_buffering设置描述:
关闭:关闭PHP输出缓存。
开:打开无限输出缓存。
4096:打开大小为4096字节的输出缓存
php缓冲默认是打开的,默认值是4096,也就是4kb。您可以在php.ini配置文件中找到output_buffering配置。当回声,打印等。输出用户数据,输出的数据会写入php output_buffering直到output_buffering写满,通过tcp传输到浏览器进行显示。也可以通过ob_start()手动激活php output_buffering机制,这样即使输出超过4kb的数据,也不是真的把数据交给tcp传递给浏览器,因为ob_start()把php缓冲区空间设置得足够大。只有当脚本结束或调用ob_end_flush函数时,数据才会发送到客户端浏览器。
有关output_buffering的详细描述,请参考:
https://www.jb51.net/article/55707.htm
补充:当然你也可以通过去掉BOM来解决这个问题。建议以UTF-8无BOM格式编码。谢谢@ ihiopop童鞋
关于BOM,简单来说,软件可以识别这个文件是否是BOM的UTF-8编码。火狐早期版本,扩展不能有BOM,但是火狐1.5以后,已经支持BOM了。现在发现PHP也不支持BOM。PHP在设计时没有考虑BOM,也就是说不会忽略UTF-8编码文件开头的BOM三个字符。
还有一个麻烦提到:“由于cookie发送机制的限制,COOKIE无法在这些文件开头有BOM的文件中发出(因为在COOKIE发出之前PHP已经发出了文件头),所以登录和注销功能无效。所有依赖于COOKIE和会话的函数都是无效的。这应该是Wordpress后台出现空白页的原因。因为任何执行的文件都包含BOM,所以这三个字符会被发送出去,导致依赖cookies和session的函数失效,所以你也可能会遇到以下错误:
复制代码如下:
警告:session _ start()[function . session-start]:无法发送E:\web\functions\sessions.php第39行中已由发送的会话cookie标头(输出开始于E:\web\index.php:1)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。