【问题标题】:Session variable destroys on every page reload会话变量在每次页面重新加载时销毁
【发布时间】:2019-11-07 11:22:51
【问题描述】:

重新加载页面后,$_SESSION 变为空! 在进行一些服务器维护之前工作正常。

为了测试,我只有一个 index.php 文件,里面有一行

session_start();
var_dump($_SESSION);
$_SESSION['test'] = 'works';
echo $_SESSION['test']; //displays the 'works' fine

但是当我重新加载页面时,'test' 变得未定义,$_SESSION 变量为空。

echo session_id(); // changes every time

有谁知道在哪里寻找问题? 这是关于写入权限的 apache 错误配置还是 cookie 的一些问题? 我很高兴听到任何想法

【问题讨论】:

  • 检查错误日志,检查带有会话ID的cookie设置的参数,检查会话ID是保持不变还是改变,...
  • 每次我重新加载页面时,会话 ID 都会发生变化。可能是什么问题?
  • 前两个想法 - 检查浏览器的 cookie 存储以确保它实际上存储了会话 cookie,并检查您的会话存储目录以确保 Web 服务器进程的所有者可以写入它。
  • 你能帮我怎么做吗?我检查了 firefox 管理 cookie 菜单,它说该页面有 13 个 Cookie,仅此而已。

标签: php apache session


【解决方案1】:

默认情况下,为当前会话设置 PHP 会话 cookie。当你刷新时,你会得到一个新的 sessionID,因为它是一个新的 cookie。

尝试使用下面的代码延长会话 cookie 的生命周期并重命名“mydomain” :-)(这是假设您使用会话 cookie:请参阅 PHP 文档。如果您使用其他东西来管理会话,检查那里)

    session_set_cookie_params((60*60*24*31), '/', '.mydomain.com'); //setting for 31 days 
    session_start(); 

【讨论】:

    【解决方案2】:

    检查是否有写入会话文件的权限。 如果存在任何错误,请查看错误日志。

    【讨论】:

    • 错误日志为空。如何检查会话文件权限?我确实有 CPanel 访问权限
    • 请不要发布 cmets 作为答案。答案是为了解决方案,而不是为了问题。如果您还没有足够的代表发表评论,请继续努力,而不是通过这种方式绕过代表限制。
    • @Ninet9 它应该在 apache 日志目录中作为 error.log 和 access.log 作为默认值
    • @MagnusEriksson 实际上 Jumper 得到了回答,但没有询问。你在他的回答中看到问号吗?谢谢跳线的建议。
    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2018-01-21
    • 2018-06-16
    相关资源
    最近更新 更多