php5.3.3的环境下,没有在代码开头使用session_start();也不会报错了,这是为什么?

解决方案 »

  1.   

    session_start 报错的话.看一下是否正常的配置。
    在php 页面中phpinfo() 看下session 是否存在。session 的path 是否设置。具体的还要自己检查。
    1.php.ini中的output_buffering=off 改成output_buffering=4096
     
    2.php.ini中的session.save_path是否设置好了
     
    3.pgp.ini中的session.auto_start = 0 改成session.auto_start = 1
     
    4.php代码session_start() 前面不能有输出,而且必须放在首行;在session_start()的php代码之前的任何字符都被看作headers。
    所以解决方法是:
    将<? session_start();.......?>放到文件首,并且<? 前面不能有任何字符
      

  2.   

    我的意思不是session_start() 报错,而是不报错,比如我在session_start() 前边加个echo "1";
    运行不会报错,1也显示在页面上
      

  3.   

    错误的代码 在php.ini 中打开啊。
      

  4.   

    error_reporting  打开错误 报告信息 看下啊
      

  5.   

    错误提示打开了,如果把session_start()注掉会报Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in D:\wamp\www\CookieandSession\session.php on line 12
    所以不是设置的问题,疑惑是为什么session_start()不在开头,也不报错
      

  6.   

    <?php
     echo "1";
      session_start(); if(@$_GET[out]){
    //session_destroy();
    unset($_SESSION['name']);
    unset($_SESSION['password']);
    }
     if (@$_POST[name]&&@$_POST[password]) {
    $_SESSION['name']=$_POST['name'];
    $_SESSION['password']=$_POST['password'];
    }
    if(@$_SESSION[name]&&@$_SESSION[password]){
    echo "登陆成功"."<br>"."用户名:".@$_SESSION[name]."<br>"."密码:".@$_SESSION[password]."<br>"; echo "<a href='session.php?out=out'>退出登录</a> "; }
    ?>  <form action="session.php" method="post" >  用户名:<input type="text" name="name" /><br>  密  码:<input type="password" name="password" /><br>
      <input type="submit"  value="登录"/>  </form>
    我的环境下正常运行,前面还输出个1
      

  7.   

    不太确定ob_start 之类的是否会影响到
      

  8.   

    因为你设置了output_buffering,所以你echo '1'; 实际上是先将输出'1'暂时保存在缓冲区,直到缓冲区满了才会真正发送到浏览器。