Я установил 3 сервера:
192.168.7.147:6379 <-- redis server
192.168.7.162 <-- web server 1 (using phpredis, with local devdomain jttest.com )
192.168.7.218 <-- web server 1 (using phpredis, with local devdomain jttest.com )
оба 192.168.7.162 и 192.168.7.218 с использованиемphp.iniКонфигурация точно такая же, как эта:
extension=redis.so
session.save_handler = redis
session.save_path = tcp://192.168.7.147:6379
также мне пришлось перезапустить Apache и Redis после изменения этих опций, конечно, я могу использовать базовую функцию Redis внутри моего PHP-кода
Проблемы начинаются здесь: я могу войти в систему на 192.168.7.162, используя стандартный вызов сессии PHP (session_start()), но сессия не может быть восстановлена на 192.168.7.218 и наоборот, проще говоря,сессия redis не используется совместно.
внутри 192.168.7.147 мне не удалось получить ключи, связанные с сеансом (имя сеанса PHPREDIS_SESSION), посмотрите на эти результаты, которые я получаю от redis-cli
redis 127.0.0.1:6379> keys *
1) "attribute"
2) "test"
redis 127.0.0.1:6379>
еще одна вещь, на 192.168.7.218php по-прежнему сохраняет сессию, используя файлы, а не redis
[root@centos_wira_devel session]# ll
total 8
-rw------- 1 apache apache 792 Feb 26 16:29 sess_1nm86s67o1o696cgopmrc2hq75
-rw------- 1 apache apache 792 Feb 26 16:41 sess_hhmompfoqjh0emoofppg4v5lp2
для информации, в моем браузере куки для сеанса (оба 192.168.7.162 и 192.168.7.218) сохранены как ['PHPREDIS_SESSION'] = hhmompfoqjh0emoofppg4v5lp2
на странице phpredis я не нашел никаких часто задаваемых вопросов по этому делу (https://github.com/phpredis/phpredis), я не знал, какой шаг я пропустил.
решение1
Настройки сеансов могут быть изменены в других файлах конфигурации, кроме php.ini. Это можно подтвердить, проверив раздел "session" вывода phpinfo(). Если значения в столбце "Local Value" отличаются от значений в столбце "Master Value", необходимо проверить другие файлы.
В частности, в Centos на сервере 192.168.7.162 весьма вероятно, что session.save_handler установлен на "files" в /etc/httpd/conf.d/php.conf .
решение2
Проверьте также конфигурацию php-fpm. После долгого осмотра я нашел это. Если вы работаете в Linux, grep
найдите, где и ваша конфигурация изменена, например, grep -r "save_handler" /etc/
это будет текстовый поиск и покажет файлы.
/etc/php-fpm.d/www.conf