Ошибки сессий в Битрикс проявляются одинаково неприятно: админка выбрасывает посреди работы, формы ругаются «ваша сессия истекла», корзина покупателя пустеет по дороге к оплате. Причин пять: сессии некуда писать (диск, права на папку), сессию обрывает проактивная защита из-за смены IP, cookie выдаётся не на тот домен, время жизни сессии слишком короткое, либо сбоит внешнее хранилище сессий - memcached или redis. Все пять диагностируются по настройкам и логам за полчаса.

Что такое сессия. При первом заходе сервер создаёт для посетителя «личное дело» (данные на сервере) и выдаёт браузеру пропуск - cookie PHPSESSID. Если пропуск потерялся, стал недействительным или личное дело не удалось сохранить, посетитель для сайта - незнакомец: отсюда разлогины и пустые корзины.

Как проявляются проблемы с сессиями в Битрикс

  • Выбрасывает из админки - каждые несколько минут приходится входить заново
  • «Ваша сессия истекла» на формах - заявки и комментарии не отправляются
  • Корзина пустеет - покупатель набрал товары, перешёл к оформлению, а там пусто
  • Слетает авторизация при оплате - возврат с платёжного шлюза встречает гостя, а не клиента
  • Ошибки session в логах - PHP пишет, что не может стартовать или сохранить сессию

Главные причины ошибок сессий и их лечение

ПричинаПризнакРешение
Диск или квота переполненыОшибки у всех, сессии не сохраняютсяЧистить место, расширять тариф
Права на папку сессийВ логах ошибки записи session.save_pathИсправить права и владельца папки
Привязка сессии к IPРазлогинивает мобильных посетителейСмягчить маску сети в проактивной защите
Cookie не на тот доменСлетает при переходе www и без wwwЕдиный домен cookie и редирект на один вариант
Короткое время жизниВыбрасывает после пары минут простояУвеличить время сессии в настройках
Сбой memcached или redisОшибки волнами, зависимость от нагрузкиЧинить хранилище, следить за памятью

Диагностика ошибок сессий пошагово

  1. Проверьте место на дискеПереполненный диск или исчерпанные inodes - самая частая и самая простая причина: сессии физически некуда писать.
  2. Посмотрите логи PHPОшибки со словом session прямо называют виновника: нет прав, нет папки, недоступно хранилище.
  3. Проверьте настройки проактивной защитыВключена ли привязка сессии к IP и с какой маской. Жёсткая привязка плюс мобильный интернет - гарантированные разлогины.
  4. Сверьте домен cookieСайт должен жить на одном каноническом домене: с www или без. Половина проблем с сессиями - гуляние между вариантами.
  5. Проверьте время жизни сессииВ настройках главного модуля. Для магазина разумно от 30 минут: покупатели думают, сравнивают, отвлекаются.
  6. Протестируйте сценарием покупателяНаберите корзину, подождите 15 минут, оформите заказ с оплатой. Слетело - смотрите, на каком именно шаге.

Покупателей разлогинивает по дороге к оплате?

Найдём, где рвётся сессия: защита, cookie, хранилище или код - и починим без ослабления безопасности. Диагностика бесплатная, смета за один день.

Починить сессии
Важно. Не выключайте проактивную защиту целиком, чтобы «не выбрасывало». Привязка сессии к IP защищает от угона сессий - вместо отключения настройте маску подсети, тогда мобильные посетители перестанут страдать, а защита останется. Если же в сессиях творится необъяснимое - лишние админы, чужие входы, - проверьте сайт по статье как понять, что сайт взломан.
Совет. После переезда на новый хостинг всегда прогоняйте сценарий «корзина - пауза - оформление - оплата»: настройки сессий на новой площадке почти наверняка другие, и лучше узнать об этом от тестовой заявки, а не от потерянных заказов.

Сессии и падение конверсии: связь прямая

Каждый разлогин на пути к оплате - минус заказ: мало кто повторно набирает корзину. Поэтому ошибки сессий - не «мелкий глюк», а дыра в воронке продаж, которую стоит закрывать в первую очередь. На абонентской поддержке мы отслеживаем такие ошибки по логам и чиним их до того, как владелец заметит просадку заказов.

Частые вопросы про сессии в Битрикс

Разлогинивает только посетителей с телефонов. Почему?
Мобильные операторы меняют IP-адрес клиента прямо во время сессии. Если в проактивной защите включена жёсткая привязка сессии к IP, Битрикс считает смену адреса угоном и обрывает сессию. Решение - смягчить маску сети в настройках защиты.
Корзина пустеет у части покупателей. Как найти причину?
Проверьте канонический домен (www и без www), время жизни сессии и поведение при возврате с платёжного шлюза. Дальше - тест сценария покупки с паузами. Чаще всего виноват один из этих трёх пунктов.
Ошибки сессий начались после переезда на другой хостинг. Что смотреть?
Настройки session.save_path и права на папку сессий, лимиты диска, версию PHP и способ хранения сессий. На новой площадке всё это отличается от старой - нужно привести к рабочему виду и прогнать тест покупателя.
В админке ошибка сессии при каждом сохранении. Это взлом?
Чаще нет: обычно виноваты переполненный диск, сбитые права или агрессивный кэш. Но исключить взлом стоит - проверьте админов, файлы и логи по нашему чек-листу признаков взлома. Если сомневаетесь, пришлите сайт нам на диагностику.

Сессии - невидимый фундамент личного кабинета, корзины и форм: пока они работают, о них никто не вспоминает. Если ваш Битрикс начал выбрасывать людей и терять корзины, закажите доработку сайта: найдём разрыв, настроим защиту без перегибов и вернём заказам стабильность. С 2013 года, 450+ проектов на Битрикс.