PHP 会话随机死亡

时间:2021-05-15 00:38:47

标签: php ubuntu nginx session

我正在处理一个我已经处理了几个月的问题,因为没有任何关于问题究竟是什么的提示。

本质上,我的 PHP 会话随机死亡(或者看起来如此)。我构建了一个相当简单的用户身份验证系统。我将用户的电子邮件存储在 $_SESSION['email'] 中,并将他们的散列密码存储在 $_SESSION['hashed_pa​​ssword'] 中。我正在运行 nginx 1.14 和 PHP 7.4。我将会话生命周期设置为 150 秒(这不是问题,会话在登录后 1 分钟内死亡)。我什至通过更改 session.save_path 将会话数据目录更改为自定义文件夹。

基本上,我登录到我的系统并开始在页面之间随机点击。 15-60 秒后,我被随机踢出系统。它出现的页面也似乎是随机的。从日志变量中,我看到 $_SESSION['email'] 和 $_SESSION['hashed_pa​​ssword'] 突然为空(我显然已经编写了一个响应,将用户发送回登录页面)。我不会在任何地方调用 session_destroy()。触发会话死亡所需的点击次数是不可预测的。它可能立即发生,也可能需要一些时间。

我意识到我没有提供很多信息,但这确实是我必须继续的全部内容。我已经阅读并重新阅读了我的用户类,并且没有任何地方会随机触发会话被破坏。我什至设置了 $_SESSION['random_int'] 以确保它不是我将用户注销,并且在发生这种行为时也是空的。

感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

似乎我可以通过将 session.cookie_lifetime 设置为 0 来解决这个问题。