php session_start()出错原因分析及解决方法

  错误提示: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

  原因:在session_start()之前如果有输出内容,会出错,

  解决办法:在session_start()之前加上ob_start();

  index.php

  

复制代码 代码如下:

  <?php

  error_reporting(-1);

  ob_start();//不加会出错,无法写入session

  register_shutdown_function('close');

  echo 1;

  session_start();

  $_SESSION['password']='mima2ddddddddddddddda2';

  function close()

  {

  if(session_id()!=='')

  @session_write_close();

  }

  ?>

  <a href="index2.php" >index2</a>

  index2.Php

  

复制代码 代码如下:

  <?php

  error_reporting(-1);

  ob_start();//不加会出错,无法读取session

  ?

  echo 1;

  session_start();

  echo $_SESSION['password'];

  var_dump($_SESSION);

  ?>

  <a href="index.php" >index</a>