PHP错误Warning: Cannot modify header information - headers already sent by解决方法
作者:未来往事 发布时间:2023-11-15 11:53:16
今天在测试以下代码时遇到该错误:
session_start();
$_SESSION['username']=$username;
echo "<script language='javascript'>location.href='../admin.php';</script>";
exit();
出现错误:
Warning: Cannot modify header information - headers already sent by...
看了一些网上的方法也没解决,最后在php.ini配置output_buffering默认为4096就没有遇到这个错误了:
output_buffering设置说明:
Off: 表示关闭PHP输出缓存
On: 打开无限大的输出缓存
4096: 打开大小为4096Byte的输出缓存
默认情况下,php buffer是开启的,而且该buffer默认值是4096,即4kb。你可以通过在php.ini配置文件中找到output_buffering配置.当echo,print等输出用户数据的时候,输出数据都会写入到php output_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。你也可以通过ob_start()手动激活php output_buffering机制,使得即便输出超过了4kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大。只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。
关于output_buffering详细介绍可以参考:
https://www.aspxhome.com/article/55707.htm
补充:当然你也可以通过去除BOM解决这个问题,建议以UTF-8无BOM格式编码。感谢 @ihipop 童鞋
关于BOM,简单的来说,软件通过BOM来识别这个文件是否是UTF-8编码。在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。
其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效,所以你也可能遇到如下错误:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at E:\web\index.php:1) in E:\web\functions\sessions.php on line 39
猜你喜欢
- 有多少次你在考虑怎样设置数据库时感到为难?其实,如果你在Linux上使用MySQL,就不会有这种情况了。在Linux上使用Webmin图形界
- str_split不支持中文,利用mb_xx函数实现个/** * Convert a string to an array * @param
- 一、在访客的内心深处做导航我讨厌迷失,不管是在道路上或是在线网络上。猜想一下?您的访客也是这样的。就像我们期望看到的道路上的路标一样,来帮助
- 关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习。今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常
- 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。这个例子中被封装的dll文件可以隐藏access数据库的实际
- 本文实例讲述了PHP截取指定图片大小的方法。分享给大家供大家参考。具体分析如下:imagecopyresampled($newim, $im
- 月份转换到中文Function MonthToCH(TheMonth) Dim mm mm=split("一,
- 假如你正在运行使用MySQL的Web应用程序,那么你把密码或者其他敏感信息保存在应用程序里的机会就很大。保护这些数据免受黑客或者窥探者的获取
- 本文从算法入手同时通过实例来讲解如何在SQL Server数据库中实现最优最简的整个过程。算法是计算机科学中一个重要的研究方向,是解决复杂问
- ajax编程获取Google的PageRank3(PR值)及所在目录,想给你的站增加Google PR查询的功能吗?如果你不会就看看本文吧,
- 数据库是数据的集合,与数学的集合论有密不可分的关系。为提高查询速度,我们可以:对数据表添加索引,以加快搜索速度;通过编程技巧最大限度地利用索
- 框架thinkphp 版本:3.2.3 内容:数据库操作1. 多表查找一条数据M('a表')->join("
- 对网站的LOGO设计做了一些归纳,希望得到批评,发现写的太长了,又不忍心删减,就分成两部分了,第一部分是有关设计基础的。第二部分是关于网站L
- 摸到她了!青翠的衣衫,奶白的肌肤,捧在手上的感觉真是太好了,心里美滋滋的。《悟透JavaScript》,一本偶然之作,终于成书并出版了。本书
- asp网站程序在国内运用很广,但是类似于im286.asp?id=20050307213811这样的url有点不利于搜索引擎的收录,也就是说
- PHP html_entity_decode() 函数实例把 HTML 实体转换为字符:<?php $str = "&
- 如果有空格就用%20代替,如果有其它字符就用%ASCII代替,如果有汉字等四个字节的字符,就用两个%ASCII来代替。不过有时候我们也需要将
- 八卦为先八卦是种优良品质,特别是用在技术上时。来看几个Reset CSS的八卦问题吧:你知道世界上第一份reset.css在哪么?* { m
- 阅读上一篇:FrontPage2002简明教程六:图片库 虽然FrontPage已经给我们提供了很多面很强大的所见即所得的工具,但是随着HT
- 本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下<?php $a = 100