为什么即使cookie和PHPSESSID仍然存在,PHP会话信息也不会通过浏览器重启而持久化?

为什么即使cookie和PHPSESSID仍然存在,PHP会话信息也不会通过浏览器重启而持久化?,php,session,Php,Session,我正在处理的PHP站点上的登录由会话cookie管理,会话cookie将用户ID存储在会话中。在浏览器关闭之前,这一切都很正常,此时用户ID信息似乎正在丢失 我已经将gc和cookie的keepalive时间分别设置为7天,php会话设置如下(通过.htaccess设置): 我可以用Chrome和Firebug验证PHPSESSID的生命周期是否为七天,并且它在浏览器重启之间是否持续存在。但是,诸如userid之类的会话变量肯定不会被保留(我可以在单独的页面上使用var_dump来验证这一点)。

我正在处理的PHP站点上的登录由会话cookie管理,会话cookie将用户ID存储在会话中。在浏览器关闭之前,这一切都很正常,此时用户ID信息似乎正在丢失

我已经将gc和cookie的keepalive时间分别设置为7天,php会话设置如下(通过.htaccess设置):


我可以用Chrome和Firebug验证PHPSESSID的生命周期是否为七天,并且它在浏览器重启之间是否持续存在。但是,诸如userid之类的会话变量肯定不会被保留(我可以在单独的页面上使用var_dump来验证这一点)。如果gc和cookie生存时间设置正确,在浏览器重启之间删除会话变量的原因是什么?

默认情况下,关闭浏览器时会删除会话cookie。你必须采取其他措施才能坚持下去——这就是为什么你认为“记住我”是一个选项,因为这不是预期的行为。

确保你不会混淆“会话”和“cookies”。只有在浏览器保持打开状态时,会话才会持续。无论浏览器是否关闭,Cookie将一直保留到过期


查看此页面以获取一些指导:或官方文档,网址为:

问题最终出现在托管提供商Rackspace Cloud上。默认情况下,Rackspace云站点会为每台服务器保存$\ u会话信息,但不会在浏览器重新启动之间尝试将同一用户定向到同一台服务器。我必须建立一个基于数据库的会话系统,或者将会话文件存储在其他地方


我的问题可能不清楚,因为“会话cookie”(cookie只能持续到浏览器重新启动)之间存在冲突以及$\u会话信息,该信息应该一直保持到垃圾回收。

我的理解是,只要PHPSESSID保持不变,并且每次都从浏览器发送到服务器,那么$\u会话信息应该在浏览器重启之间保持不变。浏览器不会自动发送PHPSESSID,因为它会丢失当它被关闭时,它会被关闭。试试$\u饼干吧。
session.use_cookies On  On
session.cookie_lifetime 604800  0
session.gc_divisor  1000    1000
session.gc_maxlifetime  604800  1440
session.gc_probability  0   0