Php 提前结束的会话
我们最近从一台运行xamp的Windows2003服务器迁移到一台运行apache的Centos服务器,PHP版本为5.3.3 最初,问题是用户在大约24分钟后注销,因此我更改了INI变量Php 提前结束的会话,php,session,Php,Session,我们最近从一台运行xamp的Windows2003服务器迁移到一台运行apache的Centos服务器,PHP版本为5.3.3 最初,问题是用户在大约24分钟后注销,因此我更改了INI变量session.save_path,从而解决了问题。然而,一些用户仍在定期从我们的网站注销,似乎是随机的。多个用户在不同的时间使用不同的浏览器时会发生这种情况。有时在页面未使用后,但有时在从一个页面浏览到另一个页面时 以下是与会话相关的INI设置: session.save_handler = file
session.save_path
,从而解决了问题。然而,一些用户仍在定期从我们的网站注销,似乎是随机的。多个用户在不同的时间使用不同的浏览器时会发生这种情况。有时在页面未使用后,但有时在从一个页面浏览到另一个页面时
以下是与会话相关的INI设置:
session.save_handler = files
session.save_path = "/var/sessions"
session.use_cookies = 1
;session.cookie_secure =
;session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 86400
session.cookie_path = /
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 86400
session.bug_compat_42 = Off
session.bug_compat_warn = On
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
session.cache_limiter = nocache
起初我认为浏览器中的cookie可能有问题,因为其中一个用户将cookie设置为永不过期,即使代码将cookie设置为24小时后过期。但是,在删除cookie并让他重新登录后,它将cookie正确地设置为24小时,他也会遇到同样的问题,即过早地注销
我创建了一个cron作业脚本,该脚本在每天早上4点删除所有会话,因为会话已移出tmp目录
我今天发现服务器上的会话没有被删除,但是当用户重新登录时,会创建一个具有新会话ID的新会话,即使他们在服务器上仍然有一个现有会话
任何帮助都将不胜感激。问题似乎是由于我的服务器删除会话后我的Cookie过期引起的 我有一个脚本设置,每天早上4点从服务器上手动删除会话,但是我的cookie设置为持续24小时。因此,即使用户重新登录网站并在服务器上创建新会话,cookie的过期时间也没有更新
我将cookie的持续时间缩短为12小时,这样cookie将始终在用户下次需要登录之前过期,并且问题已经消失。根据我的经验,如果用户使用IE,浏览器将忽略您的会话过期设置并自行处理。你确定不是这样吗?一个可能很愚蠢的问题-你的服务器的日期、时间和时区正确吗?我假设你已经检查过了,但是询问费用是零。请看这里:是的,服务器日期和时间都是正确的,php date.timezone=“America/Los_angeles”。我们有使用IE8和Firefox 14的用户都遇到了这个问题。gc_maxlifest变量应该无关紧要,因为我已将session.save_path设置为其他值,但我已将该值设置为last 24 hours,与cookie持续时间相同。创建cookie时,cookie的有效期为24小时。我查看了Grzegorz的链接,但没有看到这有什么帮助。@Ivaughan:如果链接没有帮助,我很抱歉。当Gaumbo说人们使用的方法不可靠时,我认为这是可能的。我唯一想到的是,请注意,我从未遇到过您遇到的这个问题,那就是会话id发生了变化。我现在想不出别的了。