ini_set 无法设置会话变量 – PHP 7.2.0 及更高版本

ini_set fails to set session variables – PHP 7.2.0 and higher

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

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

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

Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in /in/nOv0L on line 3

https://3v4l.org/nOv0L

我检查了 changelog 但找不到原因。

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


p.s。我知道我可以这样做:

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

但这不是我问题的重点。

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

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

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

manual 表示

Garbage collection may occur during session start

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

您可能遇到的是其他更改的人工制品,例如添加此消息作为警告(我发现的所有其他来源,例如 将其作为 "message"没有关联的级别)。