• session_start(): Cannot send session cookie headers already sent


    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by

     
     

    配置php网站的时候,经常会在页首出现Warning: session_start() [function.session-start]: Cannot send session cache limiter,也不影响页面打开。

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\orther object\phptest\session.php:1) in D:\orther object\phptest\session.php on line 2

    1. 如果用dreamwever的话并使用utf-8编码,请在某个页面上右键==>页面属性==>标题/编码,就会看到一个“包括Unicode 签名(BOM)(S)”的复选框,把它取消即可。这是因为utf-8编码文件含有的bom原因,而php4,5都是不支持bom的。

    2. 修改php.ini中的session.auto_start = 0 为 session.auto_start = 1

    3. 还有一种方法直接给session_start()加上@session_start()就没事了。

    4. 该信息说明在启用session的时候,已经有内容输出,可在最上面加 ob_start()。

       ob是output buffering的简称,ob用对了,能加速网页的速度,但是盲目的加上ob函数,只会增加CPU额外的负担。ob的基本作用。
        1).防止在浏览器有输出之后再使用setcookie,或者header,session_start函数造成的错误。

        2).捕捉对一些不可获取的函数的输出,比如phpinfo会输出一大堆的HTML,但是我们无法用一个变量例如$info=phpinfo();来捕捉,这时候ob就管用了。

        3).对输出的内容进行处理,例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。

        4).生成静态文件,其实就是捕捉整页的输出,然后存成文件,经常在生成HTML,或者整页缓存中使用。

    5.  在PHP文件头部直接加下屏蔽警告错误的代码:
        PHP代码

        <?php  

           //如有session_star(),放在session_star()后面  

           error_reporting(E_ERROR);  

           ini_set("display_errors","Off");  

           //你的php代码  

        ?>  

     
     
  • 相关阅读:
    从三道题目入门frida
    APP 抓包(应用层)
    安卓开发--探究碎片Fragment
    centos7-查询内存/硬盘等详细信息
    网页视频下载神器
    error: C++ preprocessor "/lib/cpp" fails sanity check错误解决方法
    make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误
    安装docker后修改docker文件目录
    centos集群中各节点如何实现时间同步?
    redhat7.5 yum不能用
  • 原文地址:https://www.cnblogs.com/T8888/p/15545166.html
Copyright © 2020-2023  润新知