【问题标题】:how to solve session_start(): Cannot send session cache limiter - headers already sent [duplicate]如何解决 session_start():无法发送会话缓存限制器 - 标头已发送 [重复]
【发布时间】:2014-05-04 10:43:41
【问题描述】:

我不知道为什么,它给了我这个错误,我的 session_start();已经在第一行了。我把它弄死了,让很多人面临这个问题,但答案并不能解决我的问题。 它可能导致 UTF-8 编码。但我不确定。 这是我的代码。

<?php 
session_start();

 if(!isset($_SESSION['designation']))
 {
 header('Location: login.php');
}

?>

我犯了什么错误吗?

【问题讨论】:

  • 您是否将脚本包含在其他文件中? &lt;?php之前有不可见的字符吗?
  • stackoverflow 中有多个这样的 Q,但我认为它们没有解决。我认为它是由 UTF-8 编码引起的,所以如果有问题,那么如何解决呢?感谢 AD7six
  • 是的,我在其他文件中添加了相同的脚本,但我认为这不是问题,并且在 之前没有任何不可见字符
  • 我倾向于在 php.ini 文件中将 output_buffering 设置为“on”。如果已设置,您可以使用 phpInfo() 检查。如果没有,值得尝试看看您是否在其他地方有一些输出。
  • @user3495099 有多个这样的问题没有得到解决 - 因为这是一个难以置信常见的问题,人们厌倦了重复同样疲惫的答案 =)。请阅读关于重复问题的已接受答案 - 您当前的问题不是唯一的。

标签: php session session-cookies


【解决方案1】:

您的问题似乎在您包含脚本的其他文件中。

session_cache_limiter 的文档说:

缓存限制器被重置为存储在 session.cache_limiter 在请求启动时。因此,您需要调用 session_cache_limiter() 用于每个请求(在 session_start() 之前) 被调用)。

您可以验证您的完整代码。

【讨论】:

  • -1 基本上分散了问题的注意力。 “问题”与配置的会话缓存限制器无关,它是 已经发送的标头 - 几乎可以肯定地给出了问题文本的其余部分,因为文件开头有 UTF8 bom。虽然我假设你写这个答案是为了帮助 - 它没有。
猜你喜欢
  • 2016-12-14
  • 2018-01-29
  • 2016-05-28
  • 2013-09-11
  • 2020-07-02
  • 2014-06-04
  • 1970-01-01
  • 2012-02-07
相关资源
最近更新 更多