我正在尝试设置服务器,将生存期会话增加到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会话也会被踢出。