我是PHP, Symfony和Redis的新手,并且对Redis与Symfony项目的集成进行了查询,该项目部署在Apache httpd上作为会话管理服务器。
下面是我正在使用的软件及其版本
操作系统- CentOS 7Redis - 3.2.4 -从源代码构建RedisSymfony - 2.8PHP 7 -安装以下包
- php70w
- php70w-cli
- php70w-common
- php70w-fpm
- php70w-opcache
- php70w-pdo
- php70w-pear
- php70w-process
- php70w-xml
- php70w-pecl-redis
我在php.ini文件
中做了以下条目session.save_handler = redis
session.save_path = "tcp://<<ip address of redis server>>:6379"
session.auto_start = 1
让我困惑的是,我是否必须使用phpredis客户端通过symfony代码编写会话管理,或者它应该自动发生。
请让我知道我应该使用哪种方法,因为redis服务器似乎没有被会话填充。
以上所有配置都是通过参考下面的链接完成的,并且已经特定于centos
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-redis-server-as-a-session-handler-for-php-on-ubuntu-14-04谢谢。
您必须更改默认会话处理程序。要省略Symfony会话处理程序而使用PHP,将settings.yml
中的handler_id
选项设置为null:
framework:
session:
handler_id: null
http://symfony.com/doc/current/reference/configuration/framework.html handler-id
问题出在我托管Symfony应用程序的Apache服务器上。
Apache已经启用了mod_php,并且在Apache的conf中。我有一个名为php.conf的文件。它有像
下面这些属性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"
我注释了上面的值,并添加了下面的值,它工作了。它看起来像Apache的conf中php.conf中的配置值。. d文件夹将覆盖php.ini中存在的相同属性的值。
php_value session.save_handler "redis"
php_value session.save_path "tcp://<ip address of redis>:6379"
在做了下面的修改之后,我已经可以在我的redis服务器上看到我的php会话了
谢谢。