Выкидывает из админки или Ваша сессия истекла в Битрикс

Описание проблемы

Одна из частых жалоб администраторов Битрикс: система периодически выкидывает из административной панели или показывает сообщение «Ваша сессия истекла», требуя повторного входа. Это особенно критично при работе с длинными формами, настройках компонентов или редактировании больших страниц — несохранённые данные теряются.

Проблема встречается как в Bitrix CMS, так и в Битрикс24 (коробочная версия) и может проявляться по-разному: от полного выброса на страницу авторизации до сообщения об ошибке CSRF-токена.

Основные причины выброса из административной панели

  • Короткое время жизни PHP-сессии. По умолчанию session.gc_maxlifetime в PHP равно 1440 секунд (24 минуты) — этого часто не хватает.
  • Настройки группы администраторов в Битрикс. В самом Битрикс есть собственные параметры времени сессии, которые могут перекрывать настройки PHP.
  • Несколько экземпляров PHP или разные пулы. На серверах с nginx + php-fpm настройки могут применяться не к тому пулу, который обслуживает сайт.
  • Проблемы с хранением сессий в Redis или Memcached. Если сессии хранятся во внешнем кеше с коротким TTL, сессия удаляется раньше, чем истекает cookie.
  • Ошибки в файле .htaccess. Некорректные директивы могут сбрасывать параметры сессии или мешать их работе.

Решение 1: Увеличение времени сессии через php.ini

Самый надёжный способ — увеличить время жизни сессии на уровне PHP. В BitrixVM файл php.ini находится по пути /etc/php.ini. Установим время сессии в 3 часа (10800 секунд):

session.gc_maxlifetime задаёт, сколько секунд данные сессии хранятся на сервере. session.cookie_lifetime задаёт время жизни cookie на стороне браузера. Оба параметра нужно выставить одинаково, чтобы они не противоречили друг другу.

После редактирования php.ini обязательно перезапустите PHP-FPM или веб-сервер:

Решение 2: Настройка через .htaccess

Если у вас нет доступа к php.ini (например, на shared-хостинге), аналогичные настройки можно задать через файл .htaccess в корне сайта:

Обратите внимание: директивы php_value работают только если в конфигурации Apache разрешён тип AllowOverride All для данной директории. Если хостинг не поддерживает изменение PHP-параметров через .htaccess, эти строки будут молча игнорироваться.

Решение 3: Твик через dbconn.php

Ещё один способ — добавить вызов session_set_cookie_params() непосредственно в файл подключения к базе данных Битрикс. Файл находится по пути /bitrix/php_interface/dbconn.php:

Эта строка должна быть добавлена в начало файла, до любых других вызовов. Данный метод гарантирует, что параметры cookie сессии будут установлены до того, как Битрикс инициализирует сессию. Однако он работает только для cookie и не изменяет серверное время хранения данных сессии.

Решение 4: Настройки группы администраторов в Битрикс

Битрикс имеет собственные настройки безопасности, которые могут принудительно завершать сессию вне зависимости от настроек PHP. Проверьте и скорректируйте их:

  • Перейдите в Настройки → Пользователи → Группы пользователей.
  • Откройте группу Администраторы.
  • На вкладке Безопасность найдите параметр «Время жизни сессии».
  • Установите значение 0 (по умолчанию, без ограничений) или задайте нужное время в секундах.

Также проверьте параметр «Привязка сессии к IP-адресу» — если он включён, смена IP (например, при переключении между Wi-Fi и мобильным интернетом) немедленно завершит сессию.

Решение 5: Проверка кеша и Redis сессий

Если на сервере используется Redis или Memcached для хранения PHP-сессий, проверьте TTL для ключей сессий. Он должен быть не меньше значения session.gc_maxlifetime:

Если сессии хранятся в Redis, убедитесь, что параметр session.save_path содержит корректный TTL, например: tcp://127.0.0.1:6379?auth=password&timeout=10800.

Как убедиться, что настройки применились

Создайте тестовый PHP-файл в корне сайта для проверки текущих значений (и удалите его после проверки):

Если значения отличаются от ожидаемых, значит настройки применяются не к тому конфигурационному файлу. На сервере может быть несколько версий PHP или несколько файлов php.ini — для CLI и для FPM отдельно.

Дополнительно: настройка через Главный модуль Битрикс

В коробочной версии Битрикс CMS параметры безопасности также настраиваются через административный интерфейс: Настройки → Настройки продукта → Главный модуль → вкладка «Безопасность». Здесь можно настроить время жизни сессии, ограничения по IP и другие параметры аутентификации непосредственно из браузера, без редактирования конфигурационных файлов сервера.