我已经在一个运行k8s的高山容器中安装了php7-redis扩展。添加了一个可启用redis并设置主机的conf ini文件。这显示在phpinfo的输出中,但是正在部署的应用程序(flarum)似乎没有将其会话保存到redis。基本上是必需的,因为我们想运行flarum的多个副本。
phpinfo输出
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中有什么东西阻止了它的使用吗?
FYI php-fpm与nginx一起使用
发布于 2021-01-09 15:39:23
这并不像告诉PHP使用Redis那么简单。需要扩展才能使内置会话存储过载。请参阅https://discuss.flarum.org/d/25889-how-to-use-redis-for-session-storage上的讨论
由于我们在Kubernetes中,我发现flarum将会话文件存储在/flarum/app/storage/sessions中,所以我在那里安装了一个所有副本都可以使用的共享卷。到目前为止,测试表明这种方法运行良好。
https://stackoverflow.com/questions/65605576
复制相似问题