我们最近将 PHP SESSION 管理从内存缓存切换到了 Redis。在正确存储 SESSION 的同时,我们注意到人们现在每 1440 秒或 session.gc_maxlifetime
的默认值就会注销一次。然而,在我们的 php.ini 文件中,我们设置了以下值:
session.gc_maxlifetime = 86400
session.cookie_lifetime = 86400
我已经通过 phpinfo()
确认,只有当我们将保存处理程序设置为 session.save_handler = files
时,这些值才能正确读取。然而,每当我们将保存处理程序设置为 Redis 时,这些 php.ini 值将被忽略并使用默认的 PHP 值。我们的 php.ini 中的 Redis 行是:
session.save_handler = redis
session.save_path = tcp://127.0.0.1:6379?auth=noauth
我的想法是,也许我可以将另一个参数传递到 session.save_path URL 中以设置 key 的 TTL 值,但关于哪些参数有效的文档很少。有没有办法让 Redis 从 php.ini 中获取正确的 TTL 值?或者在 URL 中传递它的方法?
最佳答案
我能够找到解决方法,但它仍然无法回答为什么 Redis 不读取我的 php.ini 文件中的设置。相反,我能够更改代码中的设置并正确识别它:
ini_set('session.gc_maxlifetime', 604800);
session_start();
关于php - PHP 中的 Redis session 忽略 php.ini 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316579/