Выкидывает из админки или Ваша сессия истекла в Битрикс
Решение, как решить проблемы с сессиями в «1С-Битрикс»
Данная проблема возникает по разным причинам, приведу несколько известных вариантов решения проблемы. В основном касается настроек PHP сервера.
- Увеличим время сессии до 3 часов. Если у вас php.ini
session.gc_maxlifetime = 10800 session.cookie_lifetime = 10800 // не забыть перезагрузить сервер
- Увеличим время сессии до 3 часов. Если у вас .htaccess
php_value session.gc_maxlifetime 10800 php_value session.cookie_lifetime 10800
- Или попробовать добавить в dbconn.php
session_set_cookie_params(10800);
- В настройках группы администраторов изменить увеличение времени жизни сессии на дефолтную.
- Бывает допущены ошибки в .htaccess. Например не до конца директиву отключили: правило закоментили, а вот условие осталось.
При входе в систему выдает ошибку авторизации.
По всей вероятности повредилось какая то таблица(возможно кончилось место, наиболее вероятная причина)
либо отсутствует «место» для хранения сессий (прим. отсутствует папка)
Ошибка: Ваша сессия истекла, повторите попытку авторизации.
Нельзя авторизоваться в админке.
Комментарий:
При входе в систему выдает ошибку авторизации
По всей вероятности повредилось какая то таблица(возможно кончилось место, наиболее вероятная причина)
либо отсутствует «место» для хранения сессий (прим. отсутствует папка)
Решение:
нужно запустить /bitrix/admin/site_checker.php (он покажет и исправит проблему)
Чтобы сделать тестирование без авторизации нужно: Инструмент представляет возможность протестировать конфигурацию даже если не работает авторизация или сайт не открывается из за нарушения сжатия (на экране отображаются крякозябры). Для этого достаточно создать пустой файл site_checker_debug в папке /bitrix. После этого откройте страницу
http://ваш_сайт/bitrix/admin/site_checker.php
Второе решение: (оно ровно такое же, но другим способом заходим в админку и на мой взгляд смысла не имеет)
Решение только для редакций, включающих модуль Проактивной защиты (Стандарт и выше).
Проблема была в том, что было включено хранение сессий в БД, при этом была повреждена таблица b_sec_session.
Отключаете скриптом через ftp хранение сессий в БД (создадим файл названием us.php с кодом который представлен ниже и закинем в корень сайта по ftp)
Код — который должен быть в файлике us.php
require ( $_SERVER [ "DOCUMENT_ROOT" ]. "/bitrix/header.php" );
COption::SetOptionInt( 'security' , 'session' , 'N' );
require ( $_SERVER [ "DOCUMENT_ROOT" ]. "/bitrix/footer.php" );
Запускам сначала наш файлик http://ваш_сайт/us.php, после этого проводим штатную авторизацию
После этого проведите проверку и восстановление БД штатными средствами Битрикса.
Довольно часто встречается такая ситуация, когда после авторизации под каким-либо пользователем в системе управления сайтом 1С-Битрикс, выходит окошко с сообщением: «Ваш сеанс работы с сайтом завершен из-за отсутствия активности в течение 24 мин.».
Изначально время жизни сессии определяется к конфигурационном файле на сервере, если это хостинг, то параметры уже стоят как правило стандартные и подходят для большинства сайтов.
Также в самой админке Битрикс можно увеличить или уменьшить время жизни сессии для конкретной группы пользователей. Правда если поставить значение больше, чем определено на сервере, то это не сработает. Также не рекомендуется изменять значение параметра на сервере на слишком большое, это может негативно повлиять на безопасность в работе сайта и потянуть за собой прочие проблемы.
Если все параметры в норме (чаще всего они находятся в своих стандартных состояниях), а вас продолжает выкидывать из панели, при чем бывает, что даже чаще, чем написано в сообщении, то нужно попробовать вариант с очисткой кеша браузера. Просто, скорее всего, в браузере по какой-то причине висят некорректные локальные файлы сессий. Желательно почистить вообще все файлы для вашего сайта, относящиеся к кешу.
Если у Вас есть возможность очистить весь кеш браузера, то этот вариант подойдет. Инструкцию по полной очистке кеша любого браузера не сложно найти в интернете. Бывает, что удалять кеш всех сайтов не представляется возможным, т.к. не хочется терять авторизации на множестве сайтов, а их может быть очень много, если в браузере работали долго без очистки кеша.
Я напишу инструкцию для Google Chrome, как удалить данные одного сайта, в остальных браузерах процедуру можно проделать по аналогии:
- В хроме, находясь на сайте, нажимаем в любом месте сайта правой кнопкой и выбираем в контекстном меню «Посмотреть код». (либо «Ctrl» + «Shift» + «I»).
- В меню разработчика переходим на вкладку «Application».
Слева будет колонка, нас интересуют пункты:- Local Storage
- Session Storage
- Cookies
- Кликаем по каждому пункту, откроется подпункт с названием сайта.
- Кликаем правой кнопкой по каждому подпункту и выбираем Clear (там будет только этот вариант).
- Перезагружаем страницу, должен быть сброс авторизации.
- Также не лишним будет перезапустить браузер.
При последующей авторизации обязательно отметить галочку «Запомнить меня на этом компьютере». В большинстве случаев этого достаточно, чтобы избавится от назойливой проблемы.
У одного из наших клиентов при использовании сервиса — защиты от DDOS атак, cloudflare возник баг — сессия постоянно слетала и любому пользователю, при каждом обновлении страницы приходилось вводить пароль заново.
Причем, админка работала более менее нормально, а в публичной части постоянно авторизация слетает. Неудобства для клиента, для контенщиков — невозмодно править элементы в режиме правки. В консоли браузера было видно, что при каждом обновлении меняется сессия юзера.
Проблема кроется в том, что после подключения к сервису cloudflare, в переменную $_SERVER['REMOTE_ADDR']
, которая должна содержать IP пользователя, передается IP cloudflare. Реальный же IP пользователя будет содержаться в переменной $_SERVER['HTTP_CF_CONNECTING_IP']
. Поэтому необходимо подменить переменную REMOTE_ADDR на HTTP_CF_CONNECTING_IP.
Итак, решение:
Открываем файл dbconn.php
. Путь к папке /bitrix/php_interface/dbconn.php. В конец файла добавляем:
$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP'];
Готово. Переменная REMOTE_ADDR будет содержать реальный IP пользователя и авторизация bitrix будет работать без проблем.
Как починить авторизацию, которая начала постоянно слетать после обновления Битрикс
Обновлено: 23 апреля 2021
9512 просмотров
После очередного обновления Битрикса в ноябре 2020 г. пользователи сталкиваются со «слётом» авторизации практически сразу после ввода пароля, то есть их разлогинивает сразу после авторизации.
Проблема с задвоением PHPSESSID (идентификатор сессии php появлялся в cookies браузера дважды) серьёзна, так как у простых посетителей задача «выполнить очистку cookies в браузере» вызовет ступор, а без этого они не смогут нормально авторизоваться.
Поэтому надо инициировать удаление лишних данных из cookie со стороны сервера, для этого впишите куда-нибудь в файл /bitrix/php_interface/dbconn.php (заменив www.site.ru из примера на свой домен):
setcookie("PHPSESSID", "", 777, "/", ".www.site.ru");
setcookie("PHPSESSID", "", 777, "/");
Если вам пришла идея переопределить название идентификатора «PHPSESSID» на уровне настроек PHP, что бы обойти проблему — это плохая идея, которая вызовет трудноотлавливаемые проблемы.
Надеюсь, эта статья помогла решить вашу проблему!
Если у Вас не получается авторизоваться в админке сайта на 1C-Bitrix, то может быть множество причин. Рассмотрим две самые популярные.
Вы забыли пароль от учётной записи или не знаете пароль.
Для того чтобы авторизоваться на сайте под управлением 1C-Bitrix в случаи если вы забыли пароль или его не знаете, но у Вас есть ftp/sftp доступ до сайта. Достаточно корневой папке сайта создать файл auth_user.php с содержимым:
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
global $USER;
$USER->Authorize(1);
@unlink(__FILE__);
LocalRedirect("/bitrix/admin/");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
Разберём что же происходит:
При помощи метода $USER->Authorize(1) будет произведена авторизация под пользователем с ID = 1. Если вдруг у вас на сайте нет пользователя с ID = 1 или он отключен, просто перебирайте ID пока не получится авторизоваться.
@unlink(__FILE__) — удаляет сам файл auth_user.php после использования, если файл удалять не хотите, закомментируйте или удалите данную строчку. ( Стока добавлена для забывчивых, кто сам не удаляет файл после использования ).
LocalRedirect(«/bitrix/admin/») — производит редирект на страницу админки.
Не сохраняются сессии из-за этого не получается авторизоваться в админке сайта на 1C-Bitrix.
Теперь рассмотрим другой случай, когда не получается авторизоваться на сайте.
Если вы вводите пароль от своей учётной записи, страница перезагружается и вы видите снова форму ввода логина и пароля, при этом никаких уведомлений об ошибках нет — скорее всего причина в том, что у Вас на сайте не сохраняются сессии.
Как правило происходит это из-за того, что на сервере «затёрлись» директории для хранения сессий. Поэтому их надо восстановить и настроить правильные права на директории.
Подключитесь к серверу используя ssh доступ — подключиться можно при помощи программы PuTTY.
После в командной строке введите следующие команды:
#Создаем директории для хранения файлов сессий
mkdir /tmp/php_sessions
mkdir /tmp/php_sessions/www/
mkdir /tmp/php_sessions/ext_www/
mkdir /tmp/php_upload/
mkdir /tmp/php_upload/www/
#назначаем пользователя и группу
chown -R bitrix:bitrix /tmp/php_sessions/
chown -R bitrix:bitrix /tmp/php_upload/
После этого проблема с авторизаций должна решиться.
Статья была полезна? Поблагодарите автора.
Столкнулся с проблемой: в битрикс не работают сессии. Функция bitrix_sessid() каждый раз выдает новую строку. В админке авторизация работает, но никакой ajax функционал — нет. Везде ошибка что сессия не верная, при этом проблема плавающая. То ошибка есть, то само по себе начинает работать.
Проблема оказалась просто в том, что на сервере закончилось свободное место на диске.
Чтобы долго не сидеть и не гадать в чем у вас проблема, выкладываю скрипт. Сохраните его в корень сайта, например с именем test.php и запустите из браузера:
<?php ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); if (! session_start()) { die('can not start session'); } else { echo '<pre>session start: ok' . PHP_EOL; } echo 'session_id(): '; var_dump(session_id()); echo '$_COOKIE["PHPSESSID"]: '; var_dump($_COOKIE['PHPSESSID']); echo 'count($_SESSION): '; var_dump(count($_SESSION)); echo '$_SESSION["a"]: '; var_dump($_SESSION["a"]); echo '$_SESSION["a"] = 1'; $_SESSION["a"] = 1;
Сессия должна стартовать, в session_id() должна быть какая-то строка, та же что и в $_COOKIE[‘PHPSESSID’]. При перезагрузке страницы id сессии не должно меняться.
После второй перезагрузки страницы $_SESSION[«a»] должно быть установлено в 1.
Вывод ошибок включен, если что — PHP напишет что не так. Я получил ошибку No space left on device (28), что говорит о том, что не хватает места на сервере.
Пожалуйста, оцените на сколько вам понравилась статья!
Достаточно часто после переноса сайта на CMS 1с-Битрикс / Bitrix с одного хостинга на другой или со старого сервера на новый администраторы сайта сталкиваются с проблемами:
- При попытке авторизоваться в админ-панели снова перекидывает на форму авторизации
- Добавление товаров в корзину не срабатывает
- Заказы на сайте не оформляются
- В оформлении заказа или других формах появляется ошибка «Ваша сессия истекла. Пожалуйста, перезагрузите страницу»
Данные проблемы могут появляться как у администратора, так и у обычных пользователей.
Как исправить данную проблему?
Данный способ сработает если у вас один сайт по многосайтовости и проблемы описанные выше не воспроизводятся в режиме инкогнито.
Внимание: для выполнения действий ниже необходимо обратиться к вашему разработчику, т.к. необходимы навыки работы с кодом и понимание вносимых изменений.
- Переходим в административную панель. Переходим в Настройки > Настройки продукта > Сайты > Список сайтов
Проверяем что у вас один сайт по многосайтовости, открываем его
Очищаем поле Доменное имя, сохраняем
- Открываем файл /bitrix/.settings.php — проверяем блок session
Проверяем, что сессии хранятся в файлах, значение блока session должно быть равно:
'session' => array ( 'value' => array ( 'mode' => 'default', ), 'readonly' => true, ),
- В /bitrix/php_interface/dbconn.php
Добавляем строку
setcookie("PHPSESSID", "", 777, '/', '.site.ru');
Где вместо site.ru указан адрес вашего сайта, например arturgolubev.ru. Обратите внимание, что перед адресом сайта стоит точка
- Проверяем авторизацию и прочие проблемы, после выполнения действий выше они должны исправиться
Если у вас используется многосайтовость или данный метод не помог — рекомендую обратиться в техническую поддержку битрикса.
Данная проблема возникает по разным причинам, приведу несколько известных вариантов решения проблемы. В основном касается настроек PHP сервера.
- Увеличим время сессии до 3 часов. Если у вас php.ini
session.gc_maxlifetime = 10800 session.cookie_lifetime = 10800 // не забыть перезагрузить сервер
- Увеличим время сессии до 3 часов. Если у вас .htaccess
php_value session.gc_maxlifetime 10800 php_value session.cookie_lifetime 10800
- Или попробовать добавить в dbconn.php
session_set_cookie_params(10800);
- В настройках группы администраторов изменить увеличение времени жизни сессии на дефолтную.
- Бывает допущены ошибки в .htaccess. Например не до конца директиву отключили: правило закоментили, а вот условие осталось.
Это касается чисто настроек php сервера.
Вот попробуйте время жизни сессии 3 часа — в файле php.ini устанавливаем следующие параметры:
session.gc_maxlifetime = 10800
session.cookie_lifetime = 10800
Если у вас нет возможности внести изменения в файл php.ini, то можно сделать установку этих параметров при помощи файла .htaccess. Для этого вносим в него следующие строки:
php_value session.gc_maxlifetime 10800
php_value session.cookie_lifetime 10800
Кроме того, вы можете установить время жизни сессионной куки из PHP при помощи функции session_set_cookie_params. К примеру:
<?php
session_set_cookie_params(10800);
?>
Михаил, добрый день! Дошла я наконец до 3 урока. И на самых простых вещах ошибки вылазят в 1с Битрикс. Можете подсказать в чем дело?
1. Оставляю только верхнее меню, нажимаю сохранить, но левое и нижнее меню снова появляются
2. Не могу создать раздел. Каждый раз, когда нажимаю «Готово» вылазит ошибка «Ваша сессия истекла. Пожалуйста, перезагрузите страницу»
3. Все время висит ошибка «Обнаружены ошибки в работе сайта». Нажимаю полное тестирование системы, ничего не происходит.
https://disk.yandex.ru/d/CE8cKZXRO31rhA скрины