通过 webtatic repo 有一些运行 RHEL 7.2 和 PHP5.6 的开发和暂存 VM。
Apache w/PHP 和 Node.js 均运行良好。Redis 守护进程运行良好。
尚未找到让 PHP 将会话存储在 redis 中的最佳实践。我看到了对 phpredis 的引用,但它似乎需要从源代码构建?...predis?...不是通过 yum 构建的 RPM?
- php-nrk-Predis?
- php-pecl-redis?
- 或者只是编辑 php.ini raw?
- 以上内容的一些组合?
最终目标:使 Apache/PHP 和 Node.js 能够在同一开发实例上的 redis 中共享会话
答案1
你确实只有一个选择。
nrk/Predis 是一个 PHP 类,它允许您编写可以读取和写入 Redis 对象的程序。这不是您在这里寻找的(尽管您可能会发现它在其他地方很有用)。
phpredis/phpredis 和 php-pecl-redis 是完全相同的东西。这是您要查找的内容;它允许 PHP 将会话存储在 redis 中。请记住,您必须编辑 php.ini 或包含的文件以指定将会话存储在 redis 中并提供连接信息。
(由于您对最佳实践感兴趣,请注意使用 webtatic不是一。在大多数情况下你应该获得 PHP来自 remi 的存储库)。
答案2
由于 RHEL/CentOS 7.2 没有直接支持 PHP 5.6,因此目前使用 webtatic repo(无论好坏)...这似乎可以解决问题。
# yum install redis
# yum install php56w-pecl-redis
# diff /etc/httpd/conf.d/php.conf
23,25c23,28
< php_value session.save_handler "files"
< php_value session.save_path "/var/lib/php/session"
< php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
---
> # p_value session.save_handler "files"
> php_value session.save_handler "redis"
> # p_value session.save_path "/lib/php/session"
> php_value session.save_path "tcp://127.0.0.1:6379"
> # p_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
> php_value soap.wsdl_cache_dir "tcp://127.0.0.1:6379"
# systemctl restart redis
# systemctl restart httpd
确保正确的 PHP 覆盖指令处于活动状态非常重要,因为 /etc/php.ini 并未激活该指令,而 /etc/httpd/conf.d/php.ini 激活了该指令。通过调用 phpinfo(); 浏览 test.php 文件非常有帮助。