PHP初学者容易遇到的错误:Warning: Cannot modify header information - headers already sent by ...;

  通常是由不正确使用 header,session_start ,setcookie等方法导致的,下面以session使用错误为例,其余几种解决方案类似;

  先给出解决方案再解释,如果急着用就不用看解释了。

  解决方案一:保存php文件编码为utf-8无BOM码,具体操作可以用notepad++等编辑器完成,把 sesstion_start() 放在文档所有输出(包括html标签和php的输出语句,具体以实际运行后有无输出为准)之前。

  解决方案二:有些同志虽然遵循了第一条方案,但由于php页面被include或require到另外一个页面中,导致前方有输出,同样报错,如果不想时刻注意session_start()使用位置的问题,可以在文件最开头写上 “ob_start()” 来打开缓冲,前提是没有使用带BOM的utf-8编码;

  解决方案三:打开php配置文件php.ini,找到“output_buffering”,设置为“On”,这种方法个人不推荐,因为如果不能在开发过程中解决问题而依赖于服务器配置,那作品的可迁移性就非常差了;

  有些人建议使用“@”符号来屏蔽错误信息,最好不要听,那属于掩耳盗铃。

  问题原因:服务器返回给客户端(浏览器)的文档流分为头部和体结构,头部必须在体结构之前,所谓体结构,通俗地说就是html流;

  而session_start()和header()之类方法都属于对文档头部信息的操作,因此在使用之前不能有任何html标记和php输出,但utf-8的BOM作为一段标记文件编码的不可见字符,却会被php当做输出,从而导致错误——php的设计理念中压根就没考虑utf-8的BOM这一说;

  新版本的php都支持输出缓冲,从而可以在session使用之前把已输出的内容存放在缓冲区内,之后按顺序输出,后两个解决方案的原理就是打开了输出缓冲区。

PHP 错误:Warning: Cannot modify header information - headers already sent by ...的更多相关文章

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

    这篇文章主要介绍了PHP错误Warning: Cannot modify header information - headers already sent by解决方法,需要的朋友可以参考下 今天在 ...

  2. 转载: PHP错误:Warning: Cannot modify header information - headers already sent by ...

    如果在执行php程序时看到这条警告:"Warning: Cannot modify header information - headers already sent by ....&quo ...

  3. Warning: Cannot modify header information - headers already sent by (output started at

    一般来说在header函数前不能输出html内容,类似的还有setcookie() 和 session 函数,这些函数需要在输出流中增加消息头部信息.如果在header()执行之前有echo等语句,当 ...

  4. Warning: Cannot modify header information - headers already sent by ... functions_general.php on line 45

    摘自:有用到 http://blog.csdn.net/besily/article/details/5396268 PHP错误:Warning: Cannot modify header infor ...

  5. 关于报错:Warning: Cannot modify header information - headers already sent by (output started at

    8月5日,第一个项目即将完成,测试时,发现登录功能会出现小问题:记住密码的时候会报错 Warning: Cannot modify header information - headers alrea ...

  6. 阿里云服务器出现Warning: Cannot modify header information - headers already sent by (output started at 问题的解决方法

    阿里云服务器出现Warning: Cannot modify header information - headers already sent by (output started at 问题的解决 ...

  7. php5.6,Ajax报错,Warning: Cannot modify header information - headers already sent in Unknown on line 0

    php5.6ajax报错 Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be remo ...

  8. PHP:Cannot modify header information - headers already sent by错误的解决方案

    <?php ob_start();setcookie("username","test",time()+3600);echo "the user ...

  9. Cannot modify header information - headers already sent by出错的原因

    <?php ob_start(); setcookie("username","送家",time()+3600); echo "the user ...

随机推荐

  1. intellij idea与github整合管理代码

    各位看官大家好,博主每每在公司学习新知识写代码时都需要通过U盘带回家来继续每天的学习,觉得这样实在麻烦,于是今天就整合了一下github来完成代码的管理. 开始之前我们需要准备三样东西:1.intel ...

  2. bootstrap实战练习中涉及的知识点(很有用哦!)

    看的有关视频做的笔记,对bootstrap中涉及的知识点做了一定的解析,很有用哦!(新手上路,有不合适的地方可以指出哦!) 下面进入正题: Bootstrap是当下最流行的前端框架(界面工具集) 特点 ...

  3. 《机器学习技法》---线性SVM

    (本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 ...

  4. 二级小兵——工厂模式(Factory Method)

    前言 上一篇我们介绍了单例模式,今天给大家讲一个比较简单的模式——工厂模式(Factory Method),工厂模式又是什么呢?顾名思义,工厂——生产制造东西的地方.那么应用在程序当中该如何使用.并且 ...

  5. 微服务SpringCloud之Spring Cloud Config配置中心服务化

    在前面两篇Spring Cloud Config配置中心的博客中都是需要指定配置服务的地址url:spring.cloud.config.uri,客户端都是直接调用配置中心的server端来获取配置文 ...

  6. java IO流 之 FIle类基础

    package IO; import java.io.File;import java.io.IOException; public class FileIO { /** * 构建及获取文件名信息 * ...

  7. Fortigate防火墙常用命令

    命令结构 #config 对策略,对象等进行配置 #get  查看相关对象的参数 #show 查看配置文件 #diagnose 诊断命令 #execute  常用的工具命令,如ping treacer ...

  8. C# 读取Word内容控件

    在Word中,借助内容控件,可设计出具有特定功能的文档或模板.以下表格中简单介绍了几种常用的内容控件. 名称 简介 下拉列表内容控件 下拉列表包含了一个预先定义好的列表.和组合框不同的是下拉列表不允许 ...

  9. Suring开发集成部署时问题记录

    前言 开发时一定要用管理员模式打开VS或者VSCODE进行开发,同时不要在nuget上直接下载,要去github上下载源代码调试.第一方便调试,第二Surging迭代较快,nuget版本往往不是最新的 ...

  10. Java 最全异常讲解

    1. 导引问题 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是 ...