【问题标题】:"Cannot send session cache limiter - headers already sent" [duplicate]“无法发送会话缓存限制器 - 标头已发送” [重复]
【发布时间】:2012-02-07 10:10:53
【问题描述】:

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

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

使用此代码:

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

这是否表明我已经使用了 session_start(); ?我环顾四周,但没有什么能真正为我解决这个问题。

谢谢

【问题讨论】:

  • "(输出开始于......第 23 行" 第 23 行是什么?
  • 第 23 行是 'session_start();'上面的代码。
  • 在我的情况下,我必须设置没有 BOM 的文件编码。

标签: php session


【解决方案1】:

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

在致电session_start 之前,请确保您没有发送任何内容。更好的是,只需将session_start 作为您在 PHP 文件中执行的第一件事(所以将其放在绝对开头,在所有 HTML 等之前)。

【讨论】:

  • 最重要的是,它起作用了,谢谢! :)
  • 请允许我分享另一个见解。如果您编写 PHP 文档,请确保
  • 就我而言 - 我创建了新文档,粘贴了内容和作品。问题是在包含的文件中包含一个 utf 符号 (bom)。
  • 我需要将文档的编码从 UTF-8 更改为 ANSI。 UTF-8 在文件内容开始之前有一个隐藏的Byte Order Mark,所以它在 session_start 有机会做它的事情之前就被发送了。
  • 我和 AaronSieb 有同样的问题。将文件编码更改为没有 BOM 的 UTF-8,一切正常!
猜你喜欢
  • 2013-06-08
  • 2016-12-14
  • 2018-01-29
  • 2017-10-19
  • 1970-01-01
  • 2020-07-19
  • 2016-05-28
相关资源
最近更新 更多