3

这是一个示例,gc_maxlifetime但它不适用于session.我尝试过的所有变量

<?php
session_start();
ini_set('session.gc_maxlifetime', 1500);

这曾经有效,直到 PHP 7.2.0 现在抛出这个警告:

警告:ini_set():会话处于活动状态。此时您无法在第 3 行的 /in/nOv0L 中更改会话模块的 ini 设置

在此处输入图像描述

https://3v4l.org/nOv0L

我检查了更改日志,但找不到原因。

谁能告诉我发生了什么变化,以及如何解决它?


ps 我知道我可以这样做:

 ini_set('session.gc_maxlifetime', 1500);
 session_start();

但这并不是我问题的重点。

4

2 回答 2

4

即使没有警告,在会话开始后更改设置也不会产生任何效果。

手册说_

会话开始期间可能会发生垃圾收集

因此,如果您在启动会话后更改该值,它将无效。对于大多数其他会话参数也是如此。

您可能遇到的是其他更改的人工制品,例如将此消息添加为警告(我发现的所有其他来源,例如Message: ini_set(): A session is active。您无法在以下位置更改会话模块的 ini 设置这次仅将其作为没有关联级别的“消息”提及)。

于 2018-01-11T15:05:25.223 回答
1

好吧,在开始会话之前进行所有配置更改:

ini_set('session.gc_maxlifetime', 1500);
session_start();
于 2018-01-11T14:59:31.280 回答