Redis для обработки сеансов приложений symfony, развернутых на Apache httpd

#php #apache #symfony #redis

#php #apache #symfony #redis

Вопрос:

Я новичок в PHP, Symfony и Redis, и у меня есть вопрос об интеграции Redis с проектом symfony, развернутым на Apache httpd в качестве сервера для управления сеансами.

Ниже приведены программы и их версии, которые я использую

OS — CentOS 7 Redis — 3.2.4 — Построен Redis из исходного кода Symfony — 2.8 PHP 7 — Установлены следующие пакеты

  • php70w
  • php70w-cli
  • php70w-общий
  • php70w-fpm
  • php70w-opcache
  • php70w-pdo
  • php70w-pear
  • php70w-процесс
  • 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 
  

Что меня смущает, так это то, должен ли я писать управление сеансами через мой код symfony, используя клиент phpredis, или это должно происходить автоматически.

Пожалуйста, дайте мне знать, какой метод я должен использовать, чтобы пойти дальше, поскольку сервер 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

Спасибо.

Ответ №1:

Вы должны изменить обработчик сеанса по умолчанию. Чтобы исключить обработчик сеанса Symfony и вместо этого использовать PHP, установите для handler_id параметра значение null в settings.yml :

 framework:
    session:
        handler_id: null
  

http://symfony.com/doc/current/reference/configuration/framework.html#handler-id

Комментарии:

1. Я оставил значение handler_id равным ~, которое было значением по умолчанию. Я выполнил поиск и обнаружил, что он равен null. Надеюсь, я прав, предполагая это, и нет необходимости явно устанавливать для него значение null.

Ответ №2:

Проблема была с сервером Apache, на котором я разместил свое приложение Symfony.

В Apache был включен mod_php, и в папке Apache conf.d у меня был файл с именем 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"
  

Я прокомментировал приведенные выше значения и добавил приведенные ниже, и это сработало. Похоже, что значения конфигурации, присутствующие в php.conf в папке conf.d Apache, переопределяют значение тех же свойств, присутствующих в php.ini.

 php_value session.save_handler "redis"
php_value session.save_path    "tcp://<ip address of redis>:6379"
  

После внесения приведенных ниже изменений я смог увидеть свои сеансы php на моем сервере redis.

Спасибо.

Комментарии:

1. Привет @rkikraari. Почему также необходимо комментировать: php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache" ? Спасибо!