一段时间后PHP重置 session

标签 php session session-cookies lamp

我知道这个问题已在 SO 中出现,我已经尝试了解决方案,但仍未解决。

PHP 在一段时间不活动后删除 session (我假设 24 分钟,因为它是默认值并且似乎适合测试)。

我在所有页面中设置了以下代码:

ini_set('display_errors', 0);
$sessionCookieExpireTime = 2880000;
session_set_cookie_params($sessionCookieExpireTime);
ini_set('session.gc_maxlifetime', $sessionCookieExpireTime);

session_start();
echo ini_get('session.gc_maxlifetime'); //echos 2880000 as expected

但是 session 在 24 分钟(左右)不活动后仍会重置。

phpinfo() 返回以下 session 输出: enter image description here

知道为什么这不起作用吗? (PHP 5.3.10)

谢谢

最佳答案

尽管 Marc B 的回答分享了一些很好的见解,但它对我不起作用。我非常确定我的脚本一切正常,并且我的代码中的 session 没有任何问题。

经过一场史诗般的斗争,我发现我的问题实际上是由于共享托管环境造成的。来自 PHP 文档:

“If different scripts … share the same place for storing the session data then the script with the minimum value will [determine the session timeout]“.

这之后问题就很明显了。一些脚本(托管在同一台服务器上)使用默认的 php.ini session.gc_maxlifetime 并且正在重置我的 session 。

解决方案是在我的主机根目录下创建一个文件夹(确保它不能通过网络访问),为其设置正确的权限,然后使用 session.save_path 告诉 php 将我的 session 存储在何处。像这样的东西:

ini_set("session.gc_maxlifetime","21600"); // 6 hours
ini_set("session.save_path", "/your_home/your_sessions/");
session_start();

这个网站提供了很好的见解:php sessions on shared hosting

因此,如果您遇到此问题,请务必遵循 Marc B 的建议,如果这不起作用,请尝试此方法。

祝你好运!

关于一段时间后PHP重置 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251550/

相关文章:

php - Heredoc 错误,显示 Parse 错误

php - 如何使用一个 SQL 查询从两个表中获取结果?

c# - 修改某些页面的 session 超时的最佳方法

cookies - 我可以使用 session cookie 而不是 csrf 吗?

php - laravel - 如何在 Controller 中实现Heartland支付方式

php - 从 MySQL 查询返回的 PHP 平均时间

php - 试图为我的未定义索引找到解决方案

c# - 如何在 MVC 4 应用程序中进行单用户登录

cookies - 雅虎财经历史数据下载器网址不起作用

node.js - Node.js 中的 session