PHP сессий в redis игнорирует конфигурацию session.cookie_domain

У меня есть пара поддоменов, которые используют одни и те же сеансы. Раньше у меня был один сервер, и у меня было следующее php.ini разрешить сохранение одного и того же куки для всех поддоменов:

session.cookie_domain = ".mydomain.com"

использование этой конфигурации заставляет сервер возвращать следующий set-cookie:

Set-Cookie: PHPSESSID=aumsloucmjspvs1mbvromqq1b5; path=/; domain=.mydomain.com

Теперь, когда у меня мало серверов, я хотел использовать Redis чтобы разделить сеансы между всеми серверами. Я настроил сервер и добавил следующее php.ini:

session.save_handler = redis
session.save_path = tcp://192.1.1.1:6379?auth=noauth

Сессии успешно сохранены на сервере, но возвращенный файл cookie установлен неверно:

Set-Cookie: PHPSESSID=cec074e4d961ff6c800c21b7466c7d5a; path=/

Таким образом, при следующем вызове клиента в другой поддомен он не отправляет файл cookie, полученный им от первого поддомена.

Я использую PHP 5.3.18, Redis 2.2.5, в сессиях в phpinfo():

Directive               Local Value  Master Value
session.auto_start      Off          Off
session.bug_compat_42   Off          Off
session.bug_compat_warn Off          Off
session.cache_expire    180          180
session.cache_limiter   nocache      nocache
session.cookie_domain   .example.com     .example.com
session.cookie_httponly Off          Off
session.cookie_lifetime 0            0
session.cookie_path     /            /
session.cookie_secure   Off          Off
session.entropy_file    no value     no value
session.entropy_length  0            0
session.gc_divisor      1000         1000
session.gc_maxlifetime  43200        43200
session.gc_probability  1            1
session.hash_bits_per_character 5    5
session.hash_function   0            0
session.name            PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files       files
session.save_path   /var/lib/php/session       /var/lib/php/session
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

Любая идея, как я могу заставить сервер отправлять правильный набор cookie?

1

Решение

Следуя подсказке, полученной от друга, я перенес те же конфигурации в /etc/httpd/conf.d/php.conf и по неизвестной причине это начало работать!

Если кто-то здесь понимает причину, по которой это помогло, я хотел бы услышать это, и я надеюсь, что это поможет другим с той же проблемой.

1

Другие решения

Чтобы установить имя сеанса в качестве префикса Redis, решить проблему для меня:

session_name('PHPREDIS_SESSION');
0

По вопросам рекламы [email protected]