session_start():无法发送会话缓存限制器 - 已发送的标头

时间:2014-04-17 05:56:23

标签: php

我不知道为什么,它给了我这个错误,以及我的session_start();已经在第一线了。代码工作之前,但我改变了SQL查询,然后它给了我那个错误。

这是我的代码。

<?php

ini_set('display_errors', 1); error_reporting(E_ALL);

session_start();
include 'connect.php';







$_SESSION['username'];
$_SESSION['id'];
$userid = $_SESSION['id'];


//Using session username to pull out variables from Table

$result=mysqli_query($con,"SELECT ......);





while ($row1 = mysqli_fetch_assoc($result))

        {

   $output[] = $row1;
        }
        if (!empty($output)){
        echo json_encode( $output );}
        else{
            echo json_encode( [] );
        }
?> 

2 个答案:

答案 0 :(得分:2)

根据PHP手册,在调用session_start之前发生某种输出时会发生错误。如果您显示错误,尤其如此。这可能是文档顶部<?php标记之前的空格,也可能是因为弃用代码发出警告,或者缺少变量或缺少;或其他类型的错误性格。最好的办法是将任何错误记录到文件中,然后在执行后查看该文件。

尝试将session_start()移至文档顶部,并检查代码中其他任何位置的任何其他文件或类或函数是否未调用session_start()

答案 1 :(得分:1)

"Cannot send session cache limiter - headers already sent"

  

“已发送标头”表示您的PHP脚本已经发送了HTTP标头,因此&gt;它现在无法对它们进行修改。

     

在调用session_start之前,请检查您是否发送了任何内容。更好的是,只需制作&gt; “session_start”你在PHP文件中做的第一件事(所以把它放在绝对的开头,&gt;在所有的HTML之前)。

希望它有所帮助。