Непоследовательная сериализация сеансов между серверами - PullRequest
2 голосов
/ 18 октября 2011

Я получаю непоследовательную сериализацию сеансов в своих средах разработки и производства.

Код идентичен, синхронизирован с SVN.Конфигурация Apache и PHP в основном идентична, отличается только доменное имя.Оба работают под управлением Debian Squeeze, сервер 64-разрядный, а разработка 32-разрядная.

На сервере сохраняемые данные выглядят как закодированные в base64, хотя я не уверен, что это:

vvZKW5WEbvvRCs0-M0R8zTDAuTsKZSADKORDemOWOXqPJs0J42l7nZIewsHp8JjGFQw64Xq2x5dB_7187W4HPdJ1Yo5yK6oHvB8ofx7GL82WJCaPrzP8pR1xm02f9HenDaShvy1WTHuMuCSJ3zWGUnjRpOuJtZ49v4Dh2L5U0M4.

Данные сеанса разработки - это обычный стиль PHP:

foo|s:3:"bar";baz|s:6:"wombat";promoter|O:8:"stdClass":0:{}475b17e28b25580bb92430bb286637ddlanguage|s:5:"en_us";

На сервере управление сеансом не работает должным образом, например, переход на субдомен на сайте приводит к повторной инициализации сеанса длявсе субдомены.

Я использую инфраструктуру Yii, хотя я устранил это как источник проблемы, скопировав код , найденный здесь в моем файле index.php, перед любой обработкой.делается фреймворком.

Итак, мои вопросы: почему это происходит, и как я могу заставить сервер сохранять данные сеанса, такие как среда разработки?

Кстати, я бы предпочел непридется прибегнуть к какому-нибудь неприятному хаку, например:

function writeSession($id,$data)
{
     $data = serialize($_SESSION);
     ....
}

TIA.

1 Ответ

2 голосов
/ 27 октября 2011

Получил некоторую помощь по этому вопросу, разница между двумя серверами заключалась в том, что на одном из них было установлено исправление suhosin и настроено шифрование данных сеанса, а на другом - нет.

Я установил патч suhosin на сервере, на котором его не было, но он создавал некоторые проблемы для меня, поэтому я отключил функцию шифрования сеанса на обоих серверах. Теперь все работает как положено.

В файле настроек, в моем случае / etc / php5 / conf.d / suhosin.ini

suhosin.session.encrypt = Off
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...