PHP错误Warning- Cannot modify header information - headers already sent by解决方法

PHP错误Warning: Cannot modify header information - headers already sent by解决方法

本文主要介绍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:webfunctionssessions.php第39行中已由发送的会话cookie标头(输出开始于E:webindex.php:1)

PHP错误Warning- Cannot modify header information - headers already sent by解决方法