Сессия Symfony пуста после входа в систему при использовании пользовательского обработчика сеанса DynamoDB

Я тяну свои волосы над этим.

Я реализовал обработчик сеанса Symfony, используя DynamoDB и AWS PHP SDK: http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-dynamodb-session-handler.html

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

Проблема в том, что когда я переносил это на свои промежуточные или производственные серверы в AWS, что-то не так при переносе сеанса. Я захожу на свою страницу входа и вижу, что сессия была создана, как и ожидалось, затем, когда я захожу, создается новая сессия, но данные НЕ переносятся на нее, что приводит к сбросу меня обратно на страницу входа.

Последние два дня я копался, пытаясь понять, где что-то пошло не так, но не могу понять.

Я попробовал все предложения в этой ветке ошибок, но ни одно из них не сработало, поэтому я предполагаю, что могу иметь дело с отдельной проблемой: https://github.com/symfony/symfony/issues/6417

Я также пытался использовать pessimistic locking_strategy который, кажется, не имеет никакого значения.

Промежуточный и рабочий серверы имеют ту же конфигурацию, что и мои локальные настройки, за исключением xDebug.

Я перевел промежуточный сервер в режим разработки с включенной отладкой, чтобы попытаться найти проблему в профилировщике, но я не вижу там ничего интересного, запросы следующие:

  • ПОЛУЧИТЬ domain.com/login (сеанс а)
  • СООБЩЕНИЕ domain.com/login_check (сеанс а)
  • ПОЛУЧИТЬ domain.com (сессия б)
  • ПОЛУЧИТЬ domain.com/login (сессия б)

Образец выше продолжает повторяться.

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

1

Решение

Это оказалось проблемой с расширением PHP jsonc, где json_decode ломался, если были нулевые байты (сериализованный защищенный метод имеет нулевые байты). Это было исправлено с версии 1.3.3.

http://pecl.php.net/package-changelog.php?package=jsonc&выпуск = 1.3.5

1

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

Других решений пока нет …

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