如何让 PHP 在 RHEL/CentOS 上的 redis 中存储会话?

如何让 PHP 在 RHEL/CentOS 上的 redis 中存储会话?

通过 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 文件非常有帮助。

相关内容