会话已过期


Session expired

我正在尝试设置服务器,将生存期会话增加到2小时,以便在一段时间不活动后能够保存调查(Limesurvey)。如果我在45分钟后尝试保存,它会显示一条错误消息,说明会话已过期。

我读了很多书来寻找解决方案,但到目前为止,我发现的都不起作用。可能是因为我错过了什么。

这就是我所拥有的:

  • Plesk 12.5.30
  • Limesurvey 2.06+Build 150831
  • PHP 5.3.10

config-defaults.php(Limesurvey)中的设置有:

$config['iSessionExpirationTime'] = 7200;

2小时这是可以的,这是我想要的,但不起作用。所以我认为我的服务器设置覆盖了Limesurvey设置。因此,我转到plesk>domains,选择我的域并单击PHP设置,向下滚动并添加到"附加说明"这两行:

session.cookie_lifetime = 7200
session.gc_maxlifetime = 7200

所以现在我所有的附加说明都是这样的:

max_input_vars = 5000
suhosin.memory_limit = 128
suhosin.post.max_value_length = 5000000
suhosin.post.max_vars = 5000
suhosin.request.max_value_length = 5000000
suhosin.request.max_vars = 5000
suhosin.simulation = 1
session.cookie_lifetime = 7200
session.gc_maxlifetime = 7200

但它无论如何都不起作用,我在45分钟后试图保存调查时仍然会遇到同样的错误。

任何帮助都会很棒。

非常感谢。

检查cron任务:

cat /etc/cron.d/php5
# /etc/cron.d/php5: crontab fragment for php5
#  This purges session files in session.save_path older than X,
#  where X is defined in seconds as the largest value of
#  session.gc_maxlifetime from all your SAPI php.ini files
#  or 24 minutes if not defined.  The script triggers only
#  when session.save_handler=files.
#
#  WARNING: The scripts tries hard to honour all relevant
#  session PHP options, but if you do something unusual
#  you have to disable this script and take care of your
#  sessions yourself.
# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean

通常会话目录由同一Web空间上的所有应用程序共享。因此,如果你有其他应用程序(CMS)在运行,他们可能会将会话超时设置得更短,因此LimeSurvey会话也会被踢出。