【问题标题】:Warning: session_start(): Cannot send session cache limiter, even though I am checking for existing session警告:session_start():无法发送会话缓存限制器,即使我正在检查现有会话
【发布时间】:2023-04-07 12:01:02
【问题描述】:

我的会话有问题。

我得到了错误

警告:session_start():无法发送会话缓存限制器

我在 2 页中有此代码

if (!isset($_SESSION)) {
  ini_set('session.gc_maxlifetime', 3*24*60*60);
  session_set_cookie_params(3*24*60*60);
  session_start();
}

我只能找到没有进行 isset 检查的人的实例,所以我不知道为什么会发生这种情况:(

我检查了空格,我的 php 标签在两个文件的第 1 行。

这是加载具有上述代码的 dbmgmt 的第一页。我需要两个文件中的会话代码,因为创建会话的页面并不总是包含 dbmgt。

<?php
if (!isset($_SESSION)) {
  ini_set('session.gc_maxlifetime', 3*24*60*60);
  session_set_cookie_params(3*24*60*60);
  session_start();
}
require("dbmgmt.php");
?>

【问题讨论】:

  • 确保它高于页面可能发送的任何 HTML 代码。
  • 绝对在任何 HTML 或空格之前。
  • 你能把这段代码放在一个独立的.php页面中,然后just调用这段代码来确定吗?在此之前是否还有其他错误输出?
  • 实际上,这证实了在session_start() 之前发送肯定有 输出。毕竟,这就是产生错误的地方。

标签: php session


【解决方案1】:

您正在尝试调用 session_start(),它正在尝试将 HTTP 标头发送到页面的输出。

但是在您的脚本的前面某个地方,您已经开始输出页面的内容。标题必须在内容之前。

尝试在任何 HTML 或内容(偶数空格或空格在?&lt;php 和?&gt; 标记之外)之前调用此代码。

【讨论】:

    【解决方案2】:

    试试

    <?php 
       session_start();
       ob_start();
    ?>
    

    这将解决您的问题。

    【讨论】:

    • 谢谢,不幸的是它没有。
    • 除了生产环境之外,禁用错误报告会带来全新的一系列问题。这是一个反解。
    猜你喜欢
    • 2011-11-14
    • 2017-12-27
    • 2016-05-28
    • 2014-06-04
    • 2018-01-29
    • 2012-05-23
    • 2013-09-11
    • 2020-07-02
    • 2016-12-14
    相关资源
    最近更新 更多