使用 redis 的 PHP 会话处理程序不起作用

使用 redis 的 PHP 会话处理程序不起作用

我设置了3台服务器:

192.168.7.147:6379 <-- redis server
192.168.7.162 <-- web server 1 (using phpredis, with local devdomain jttest.com )
192.168.7.218 <-- web server 1 (using phpredis, with local devdomain jttest.com )

192.168.7.162 和 192.168.7.218 均使用php.ini配置完全像这样:

extension=redis.so
session.save_handler = redis
session.save_path = tcp://192.168.7.147:6379

在修改这些选项后,我也重新启动了 apache 和 redis,当然,我可以在 php 代码中使用 redis 的基本功能

问题从这里开始,我可以使用 php 标准会话调用(session_start())在 192.168.7.162 上登录,但无法在 192.168.7.218 上检索会话,反之亦然,简而言之,redis 会话未共享

在 192.168.7.147 中,我无法获取与会话相关的密钥(会话名称是 PHPREDIS_SESSION),看看我从 redis-cli 获得的这些结果

redis 127.0.0.1:6379> keys *
1) "attribute"
2) "test"
redis 127.0.0.1:6379>

还有一件事,在 192.168.7.218php 仍然使用文件保存会话,而不是使用 redis

[root@centos_wira_devel session]# ll
total 8
-rw------- 1 apache apache 792 Feb 26 16:29 sess_1nm86s67o1o696cgopmrc2hq75
-rw------- 1 apache apache 792 Feb 26 16:41 sess_hhmompfoqjh0emoofppg4v5lp2

有关信息,在我的浏览器中,会话 cookie(192.168.7.162 和 192.168.7.218)保存为 ['PHPREDIS_SESSION'] = hhmompfoqjh0emoofppg4v5lp2

在 phpredis 页面中我没有找到有关此案例的任何常见问题解答(https://github.com/phpredis/phpredis),我不知道我遗漏了哪一步。

答案1

会话设置可能在其他配置文件中发生更改,但 php.ini 除外。这可以通过检查 phpinfo() 输出的“session”部分来确认。如果“Local Value”列中的值与“Master Value”列中的值不同,则必须检查其他文件。
具体来说,在 Centos 中,在服务器 192.168.7.162 上,很有可能在 /etc/httpd/conf.d/php.conf 中将 session.save_handler 设置为“files”。

答案2

还要检查 php-fpm 配置。经过长时间的检查,我发现了这一点。如果您使用的是 Linux,请grep查找您的配置在哪里被修改,例如,grep -r "save_handler" /etc/它将进行文本搜索并显示文件。

/etc/php-fpm.d/www.conf

相关内容