#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
Спасибо.
Ответ №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"
? Спасибо!