"无法发送会话缓存限制器 - 已发送的标头"

use*_*878 123 php session

可能重复:
PHP标头已经发送已经由PHP发送的标头

会话的问题变得非常烦人.每次我尝试在特定页面上启动会话时,都会收到以下错误:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ............ on line 23
Run Code Online (Sandbox Code Playgroud)

使用此代码:

<?php
session_start();
if(isset($_SESSION['user']))
    {
        $user = $_SESSION['user'];
        echo "$user";
    }
else
    {
    }
?> 
Run Code Online (Sandbox Code Playgroud)

这表明我已经使用过session_start();吗?我环顾四周,但对我来说没有什么能真正解决这个问题.

谢谢

hou*_*oft 246

"已发送标头"意味着您的PHP脚本已经发送了HTTP标头,因此它现在无法对它们进行修改.

在致电之前,请检查您是否发送了任何内容session_start.更好的是,只需session_start在PHP文件中做第一件事(所以在所有HTML等之前将它放在绝对的开头).

  • 请允许我分享另一个见解.如果您执行PHP文档,请确保<?php是第一个字符,而不是选项卡或间距.这解决了我的问题. (78认同)
  • 在我的情况下 - 我创建了新文档,粘贴了内容和工作.问题是在包含的文件中包含了一个utf符号(bom). (25认同)
  • 把<?php session_start(); ?>一切都很有效,谢谢!:) (17认同)
  • 我需要将文档的编码从UTF-8更改为ANSI.UTF-8在文件内容开始之前有一个隐藏的[字节顺序标记](https://en.wikipedia.org/wiki/Byte_order_mark),因此在session_start有机会完成它之前就会发送它. (3认同)
  • 我和 AaronSieb 遇到了同样的问题。将文件编码更改为无 BOM 的 UTF-8,一切正常! (3认同)