如何解决未使用 PHP redis 会话 save_handler
我已经在 k8s 中运行的 alpine 容器中安装了 PHP7-redis 扩展。 添加了启用 redis 并设置主机的 conf ini 文件。 这显示在 PHPinfo 的输出中,但正在部署的应用程序 (flarum) 似乎没有将其会话保存到 redis。 基本上需要,因为我们要运行 flarum 的多个副本。
session
Session Support enabled
Registered save handlers files user redis rediscluster
Registered serializer handlers PHP_serialize PHP PHP_binary
Directive Local Value Master Value
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_samesite no value no value
session.cookie_secure 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.lazy_write On On
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler redis redis
session.save_path tcp://flarum-redis-master:6379?auth=<redis-password>
session.serialize_handler PHP PHP
session.sid_bits_per_character 5 5
session.sid_length 26 26
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies 1 1
session.use_only_cookies 1 1
session.use_strict_mode 0 0
session.use_trans_sid 0 0
我可以取消注册 files user rediscluster
只留下 redis
或以其他方式强制使用它吗?
看不到我错过了什么选项,或者为什么没有会话被保存到 redis。
我已经使用这个脚本测试过它应该可以工作
<?PHP
session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;
echo $count;
$_SESSION['count'] = ++$count;
刷新此 test.PHP 文件后,会话数据显示在 redis 中。 flarum 中是否有什么东西阻止了它的使用?
解决方法
这并不像告诉 PHP 使用 Redis 那样简单。 需要一个扩展来重载内置的会话存储。 请参阅 https://discuss.flarum.org/d/25889-how-to-use-redis-for-session-storage
上的讨论由于我们在 Kubernetes 中,我发现 flarum 将会话文件存储在 /flarum/app/storage/sessions
中,因此我在那里安装了一个所有副本都可以使用的共享卷。到目前为止的测试表明,这很有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。