Я использую сеанс Symfony для хранения и выбора языка, выбранного пользователями на странице всплеска. Если у них нет языкового набора, они перенаправляются непосредственно на всплеск. Такое поведение работает так, как ожидалось.сеанс и кеш Symfony2: команда очистки
К сожалению, когда я очищаю кеш, у меня возникают проблемы с ним (я использую команду php app/console cache:clear --env=prod
). Пользователи могут получить доступ к одной странице, а затем при каждом нажатии они будут перенаправлены на всплеск. Впоследствии, даже если они выберут язык, он не сможет продвинуться дальше, чем на главной странице, любой щелчок снова перенаправит на всплеск.
Если я удалю папку кэша вручную, ошибка не возникнет.
конфигурацияМоей связанная сессии является следующим:
framework:
session:
handler_id: ~
gc_probability: 0
У меня нет папки сеанса в мой каталог кэша. Я могу найти файлы своего сеанса в папке tmp моего сайта (идентификатор сеанса и содержимое соответствуют cookie сеанса пользователя и выбору языка). Они сохраняются после команды cache: clear, но похоже, что Symfony больше не может получать значения из этих файлов. Кроме того, для этого пользователя не создается новый файл сеанса, и, похоже, новый языковой выбор не может быть написан нигде.
Я не ошибка на моей локальной среде разработки (улучшенный Homestead), но он у меня на всех моих других средах (Dev, постановка, производство)
Использование $ session-> недействительными(); на странице всплеска будет исправлена проблема. Но я хотел бы понять, почему это происходит. Есть идеи ?
Почему вы установили 'gc_probability' в 0? И, полагаю, вы переопределяете 'session.save_path'? Если у вас есть другое поведение между экологическими проверками, что конфигурация не изменяется –
Честно говоря, я не знаю, что такое gc_probability, поскольку я сам не запускал проект. Удалите эти настройки для использования по умолчанию. – Wanjee
'session.save_path' не работает ни в конфигурации Symfony, ни в любом комплекте. Поэтому это должно быть по умолчанию '% kernel.cache.dir%/sessions', но это не то, что происходит, они хранятся в папке tmp. Значение параметра php 'session.save_path' устанавливается в'/srv/www/my_domain/var/tmp', и это место, где записаны файлы сеанса. – Wanjee