Php 约25分钟后,会话将丢失

Php 约25分钟后,会话将丢失,php,apache,session,configuration,Php,Apache,Session,Configuration,我在apache服务器2.4.16上使用PHP5.5.38。一段时间后(大约25分钟),我遇到了一个问题,那就是无法参加会议。我在php.ini文件中找到了这些参数 session.gc_maxlifetime=1440 session.gc_概率=10 但在代码中,这些值被设置为不同的值。代码如下所示 ini_set('session.gc_maxlifetime', 60*60*24*7); ini_set('session.use_cookies', 1); ini_set('sessio

我在apache服务器2.4.16上使用PHP5.5.38。一段时间后(大约25分钟),我遇到了一个问题,那就是无法参加会议。我在php.ini文件中找到了这些参数

session.gc_maxlifetime=1440
session.gc_概率=10

但在代码中,这些值被设置为不同的值。代码如下所示

ini_set('session.gc_maxlifetime', 60*60*24*7);
ini_set('session.use_cookies', 1);
ini_set('session.gc_probability', 0);
我确认他们返回了旧的值,这意味着它没有失败或其他什么


我不知道还有什么地方可以找到失败的原因。如果您有任何想法或建议,我们将不胜感激。

当您使用
ini\u set()
设置配置值时,它仅在当前脚本执行期间持续:

配置选项将在脚本执行期间保留此新值,并在脚本结束时恢复

并且,当
session.gc\u maxlifest
有多个值时,垃圾收集器将使用最低的:

如果不同的脚本具有不同的session.gc_maxlifest值,但共享存储会话数据的相同位置,则具有最小值的脚本将清除数据

因此,您需要做的是在使用会话的每个页面中设置
ini\u set()
赋值,或者更好的选择是直接将
php.ini
文件修改为您需要的值

请注意,25分钟大约是1440秒(24分钟),因此它肯定使用了
php.ini
的值


您是否检查了htaccess文件?您是否有类似于
php\u value session.gc\u maxlifest的内容
是的,我还检查了htaccess文件,没有任何内容。实际上每个页面都使用ini\u set()赋值。如果每个页面上都有这个新值,那么它不应该保留吗?@Shaonline如果您有一个基于debian的系统,垃圾收集是通过一个每隔一分钟左右启动的cronjob来完成的。此脚本(以及类似的实用程序脚本)将使用默认的php.ini值运行。ishegg是正确的,您应该在主php.ini文件中设置此设置,而不是在user land中设置脚本。@OptimusCrime所说的一个(有点)“黑客”解决方法是设置
会话。将路径保存到另一个目录,以便cronjob无法访问它,使用
会话保存路径()。这当然不太理想。您是否可以直接更改ini文件中的值?看起来这是唯一的方法,但我仍然没有找到原因。我这样说是因为相同的代码在两个不同的环境中。我只在一个环境中遇到了这个会话问题,其中session.gc_maxlifetime的php.ini值在两个环境中都是1440。这两者有什么不同?硬件、软件、设置等?(显然,与会议有关)。