【问题标题】:Session expired会话已过期
【发布时间】:2016-08-04 21:39:16
【问题描述】:

我正在尝试将服务器设置为将生命周期会话增加到 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>域,选择了我的域并点击了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 分钟后尝试保存调查时仍然遇到同样的错误。

任何帮助都会很棒。

非常感谢。

【问题讨论】:

  • 进行这些更改后您是否重新启动了 Apache
  • @RiggsFolly 重启服务器不一样吗?
  • 我不是 PLESK 专家,但如果您更改 php 配置,即php.ini,则必须重新启动 Apache 以使其获取修改后的 ini 信息是正常的。除非您使用的是 FastCGI,否则我想不需要重新启动?
  • @RiggsFolly 我想我正在使用 FastCGI,但在重新启动服务器后它也不管用。现在我正在尝试直接编辑 php.ini,而不是通过 "Additional Instructions" 来查看这是否是问题所在,并且该字段可能没有按预期工作。
  • @RiggsFolly 到目前为止我尝试过的任何东西都有效......还有其他人有想法吗?

标签: php session plesk limesurvey


【解决方案1】:

检查 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

【讨论】:

  • 不确定如何检查,能否请您指导我?我有腻子,只是写了 cat /etc/cron.d/php5 然后它向我显示了一些类似这样的信息: 09,39 * * * * root [ -x /usr/lib/ php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -删除
  • /etc/cron.d/php5 中的命令每 9 分钟和 39 分钟检查一次文件 /usr/lib/php5/sessionclean 是否存在,而不是检查 /var/lib/ 中的旧会话文件php5 并删除年龄大于 /usr/lib/php5/maxlifetime 中定义的值的文件
  • 您可以检查并删除 /usr/lib/php5/maxlifetime 或增加 /usr/lib/php5/maxlifetime 的值。小心删除 /usr/lib/php5/maxlifetime - 会话文件可能会占用您的可用磁盘空间。
  • 对不起,我对这种东西真的很陌生,你能指导我吗?我怎样才能检查它以增加它?只是在 Putty 中写 /usr/lib/php5/maxlifetime??
  • 非常感谢您的帮助,这段时间我学到了很多。我已经进行了这些更改,但仍然没有运气...我不太了解这种行为,我测试了会话处于非活动状态 1 小时 55 分钟(在 2 小时到期之前),当我保存时(我在石灰调查中的调查)工作正如预期的那样,但随后我离开了 1 小时以上的不活动状态,当我再次保存时,它就会过期。不应该从0重新开始吗?
【解决方案2】:

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

【讨论】:

  • 其实是的,服务器上还安装了一些其他的cms,旧的没用的和现在的“CMS Made Simple”。我该如何检查,请您指导我吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
相关资源
最近更新 更多