-
March 20 2015, 14:20
В Apache .htaccess по этому случаю существует запись:
RewriteRule .* — [E=REMOTE_USER:%{HTTP:Authorization}]
Что нужно сделать в конфиге nginx:
Найдите блок обработки php, с перечислением fastcgi_param и добавтье в него:
fastcgi_param REMOTE_USER $http_authorization;
Что нужно сделать в /php_interface/dbconn.php:
$remote_user = $_SERVER[«REMOTE_USER»] ? $_SERVER[«REMOTE_USER»] : $_SERVER[«REDIRECT_REMOTE_USER»];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp) {
list($_SERVER[‘PHP_AUTH_USER’], $_SERVER[‘PHP_AUTH_PW’]) = explode(‘:’, $strTmp);
}
7
12.05.200915:0312.05.2009 15:03:45
Что делать если на каждый хит теряется авторизация? Простому пользователю проще будет написать в техподдержку. А разработчик сайта может сам легко продиагностировать эту проблему не дожидаясь ответа техподдержки. Для гуру веб разработок материал, возможно, будет не очень интересен. А для тех, кто хочет такими стать, предлагаю доступное изложение работы механизма авторизации.
Показать скрытое содержание
Когда поступает обращение в техподдержку с такой проблемой, мы классифицируем его как простое. Потому что понимая механизм работы авторизации можно быстро локализовать проблему. В
частых вопросах
коротко описаны основные проблемы, хочу показать обоснование.
Как это работает
В своей основе технология веб сайтов (протокол HTTP) не предполагает идентификацию пользователей: соединение с сервером не поддерживается, каждый переход по страницам — новое подключение к веб серверу.
Чтобы различать запросы в php используется механизм сессий. Принцип следующий: при первом заходе на сайт посетителю присваивается уникальный идентификатор (идентификатор сессии, далее PHPSESSID), браузер сохраняет его у себя, сервер хранит некоторую информацию для этого идентификатора (например о том, что он авторизован). Затем при каждом новом переходе вся сохранённая информация (данные сессии) читаются интерпретатором php и передаются скрипту.
А значит проблемы начнутся когда: сервер не выдаст ID, клиент не сохранит ID или сервер не сохранит данные сессии.
Как проверить
PHPSESSID передаётся через заголовки HTTP — эта часть служебной информации, которая не показывается браузером. Для её просмотра нужно использовать специальные инструменты (бесплатные), самые популярные:
прокси сервер Fiddler
, плагины FireFox
FireBug
и
livehttpheaders
. Последний — простой плагин, которым я воспользуюсь для иллюстрации вопроса.
Через меню инструменты делаю открываю окно «Live HTTP Headers» и делаю первый хит на сайт (все куки очистил):
Подсветкой выделил ключевую строку (часть идентификатора скрыл с тем чтобы у особо пытливых читателей не было соблазна ходить под моей сессией).
Здесь сервер указал, что мне следует сохранить в куки PHPSESSID. Если этого не произошло — дальше ничего не пойдёт. Верный признак проблемы: в заголовке нет ни одной записи Set-Cookie. В подавляющем большинстве случаев это говорит о том, что до старта сессии был вывод на экран. После этого php не может изменить заголовки HTTP. Типичный пример из файла /bitrix/php_interface/dbconn.php:
define("CACHED_menu", 3600); ?> <? define("BX_FILE_PERMISSIONS", 0644);
Здесь закрывается php тегом ?>, потом идёт перенос строки, который разработчики часто игнорируют, затем продолжение скрипта. Но нельзя забывать, что перенос строки (равно как и пробел) — это начало формирования тела страницы, а значит заголовки HTTP уже выставлены не будут. Тоже самое в начале и конце файла не должно быть никаких посторонних символов. Правильно:
define("CACHED_menu", 3600); ?><? define("BX_FILE_PERMISSIONS", 0644);
или просто
define("CACHED_menu", 3600); define("BX_FILE_PERMISSIONS", 0644);
Также надо обратить внимание на файл init.php в этой папке, к нему те же требования.
Может быть ситуация, когда проблема в настройках сервера, это легко проверить нашим скриптом:
bitrix_server_test.php
(чтобы сессии работали на сервере нужна поддержка сессий в php, указана папка сохранения сессий и у php были права на запись в эту папку).
Работа с куками
Кука была сохранена, то на следующий хит браузер должен передать PHPSESSID на сервер.
Редко встречаются проблемы в работе браузеров, чаще идентификатор не передаётся в результате неправильного сохранения. Поясню. На прошлом изображении в строке Set-Cookie есть запись:
domain=1c-bitrix.ru. Она определяет, на какой домен будет распространяться кука. Для браузеров действуют простые правила безопасности:
— нельзя сохранить куку в другом домене. Например, сайт 1c-bitrix.ru не может выставить куку для домена mail.ru, если домен не будет соответствовать — она просто будет отброшена;
— куки из верхнего домена распространяются на поддомены. Например, указали 1c-bitrix.ru, открываем dev.1c-bitrix.ru или www.1c-bitrix.ru — кука должна передаваться. Наоборот не будет работать: кука домена www.1c-bitrix.ru не подхватится на 1c-bitrix.ru.
— если не указан домен — кука привязывается к текущему домену, но не распространяется на поддомены.
Битрикс указывает домен в куки из настроек сайта. А значит убедитесь, что в настройках сайта указаны правильные домены (поле Доменное имя).
На этот и все последующие хиты в ответе сервера кука PHPSESSID не должна выдаваться:
Если браузер передал PHPSESSID, а сервер всё равно выдал новый, значит он либо не сохранил сессию у себя (проверить папку и права на неё, часто бывает неправильно указан путь в windows, используются обратные слешы вместо прямых /) либо сессия истекла и сервер её удалил (между хитами должно пройти какое-то время).
Если тест сервера показывает, что сохранение сессий работает, сессии PHPSESSID сохраняется и передаётся, но авторизация всё равно теряется, значит проблема в настройках битрикса. Приходилось сталкиваться с ситуацией, когда интернет-провайдер периодически меняет IP адрес клиента, тогда срабатывает настройка привязки к IP в настройках безопасности группы пользователей. В этом случае следует установить привязку 0.0.0.0.
Это основные проблемы, встречаются экзотические ситуации, но очень редко. Большинство проблем с авторизацией, а также сохранением данных с ошибкой Ваша сессия истекла или Ошибка безопасности диагностируются как показано здесь.
Отсюда:
http://forum.hostdvor.com/viewtopic.php?f=35&p=119
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=1967 (офсайт)
Форматирование — оригинальное, так что все плевки о грязи в коде — в оригинал.
Ошибка: Не работает авторизация при обмене данными с 1С в Bitrix CMS.
Среда: php 5.3.8 as fcgi SAPI;
Решение: Часто проблема возникает в результате работы php в режиме FCGI (fast cgi).
В этом режиме есть проблемы с передачей данных авторизации HTTP в php. Проверить работу HTTP авторизации можете в админ. панели Битрикс -> Рабочий стол -> Настройки -> Инструменты -> Проверка сайта
или по прямой ссылке:
http://имясайта.com/bitrix/admin/site_checker.php
Для решения данной проблемы попробуйте выполнить такие действия:
1) В корне сайта в файл .htaccess добавьте строки:
- КОД: ВЫДЕЛИТЬ ВСЁ
RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
2) Закоментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:
- КОД: ВЫДЕЛИТЬ ВСЁ
#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>
3. В файл bitrix/php_interface/dbconn.php добавьте строки:
- КОД: ВЫДЕЛИТЬ ВСЁ
$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Внимание: на сервере должна быть включена поддержка rewrite rules и правил .htaccess.
Интеграция 1С и Bitrix не всегда проходит гладко, даже можно сказать что практически всегда возникают разного рода «подводные камни», с которыми приходится бороться. Вроде сделали всё по документации, но частенько можно столкнуться с разного рода ошибками. Довольно распространённая из них – появление при попытке соединения модуля обмена с сайтом, сообщение вида: «Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль».
Решение этой проблемы может быть разным, как на стороне 1С, так и на стороне сайта. По этой причине решил сделать вроде некого чек-листа, который позволит пройтись просмотреть каждый из пунктов и решить эту проблему без длительных поисков по разным ресурсам.
1. На компьютере, где запускается обмен с 1С — проверяем доступность сайта. 1C использует настройки подключения браузера Internet Explorer, поэтому стоит проверить открывается ли ваш сайт в этом браузере. Добавьте исключение для сайта – бывает соединение блокируется.
2. На стороне сайта — проверьте учётную запись, логин и пароль, а также разрешение для обмена в настройках интеграции с 1С. Пользователь должен быть в группе, для которой разрешен обмен с сайтом. Убедитесь, что логин состоит исключительно из букв латинского алфавита, т.к. это так же может стать причиной появления ошибок такого рода.
3. Очень часто бывает проблема с настройками временной зоны сервера базы данных. Т.е. временная зона базы данных должна быть выставлена правильно. Лечится очень просто, открываем файл /bitrix/php_interface/after_connect.php, и дописываем туда строку:
$DB->Query("SET LOCAL time_zone='".date('P')."'");
4. Ещё одна банальная причина – неправильный адрес указан в настройках подключения. Часто бывает ошибка именно в недоступности ссылки по http/https. Путь подключения по умолчанию должен быть такой:
рабочий_протокол://домен_вашего_сайта/bitrix/admin/1c_exchange.php
5. Если вышеуказанное не помогло, так же бывает ошибка может возникать при работе PHP в режиме CGI. В некоторых случаях бывают проблемы с передачей данных авторизации HTTP в PHP. Посмотреть в каком режиме отрабатывает PHP можно через функцию phpinfo() – если в режиме CGI, то будет «Server API: CGI». Простое решение – добавить в .htaccess строки вида:
RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
Далее в файле Bitrix/admin/.htaccess следует закомментировать строки, отключающие mod_rewrite:
#<ifmodule mod_rewrite.c=""> # RewriteEngine Off #</ifmodule>
После этого в файле bitrix/php_interface/dbconn.php добавляем строки:
$remote_user = $_SERVER["REMOTE_USER"] ? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Стоить помнить, что описанное в этом пункте – это так называемый «костыль», по-хорошему лучше понастроить сервер под Bitrix или обратиться к тех поддержке хостинга.
Тут собраны самые распространённые причины данного вида ошибки. Если вы решили свою проблему иным путём, делитесь им в комментариях.
Разместили проект не на выделенке, а на шареде. В целях, известных одному
Богу
хостеру, php там бегает не как mod_php, а как php-cgi/fcgi.
Сразу же после размещения проекта на хостинге советую проверить настройки сайта — /bitrix/admin/site_checker.php?lang=ru
По результатам проверки на себя обратила внимание ошибка HTTP-авторизации, в связи с тем, что в ее описании отмечено, что она мешает обмену с базой 1С и «другому функционалу».
И действительно — выгрузка не идет. Причина — скорее всего в отсутствии HTTP-авторизации. Решение для починки следующее:
1. Убеждаемся что на сервере есть mod_rewrite и прописываем в .htaccess строки:
RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
Вообще, в .htaccess, поставляемом с Битриксом эти строки уже есть, но убедиться лишний раз стоит.
2. Далее отключаем отключение (!) реврайта в административном разделе: комментируем в /bitrix/admin/.htaccess весь блок с модулем mod_rewrite:
#<ifmodule mod_rewrite.c> # RewriteEngine Off #</ifmodule>
3. В init.php дописываем код:
$remote_user = $_SERVER["REMOTE_USER"]? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', $strTmp);
Можно пробовать выгрузку. В моем случае все заработало.
Решение взято с сайта битрикса, там же описано еще несколько типовых проблем с выгрузкой из 1С.
Проблема авторизации в Битрикс
Проблема авторизации в Битрикс
14.08.2015
Во время администрирования сайта столкнулся с тем, что не работает авторизация в систему управления сайта Битрикс. С чем же может быть связано не вхождение в систему?
Характерные признаки проблемы:
- Появляется урл вида: bitrix/admin/index.php?_r=3456#authorize где r=3456 меняется на любое число с каждой попыткой
- Ошибок никаких не выдает
- Вирусов и внедрений на сайте нет.
Основные признаки: похоже на проблему сохранения сессии
Решение проблемы:
В этом конкретном случае сессии хранятся в БД (таблица b_sec_session). Она была повреждена и авторизация не срабатывала. После исправления таблицы авторизация работает.
Нужно восстановить только одну таблицу в базе данных b_sec_session, поможет команда: mysqlcheck -r db_name table_name -uroot -p
После восстановления таблицы получил такую ошибку (до этого ошибки не выдавались):
BitrixMainDBSqlQueryException]
Mysql query error: (145) Table './.../b_sec_session' is marked as crashed and should be repaired (400)
SELECT
`security_session`.`SESSION_DATA` AS `SESSION_DATA`
FROM `b_sec_session` `security_session`
WHERE `security_session`.`SESSION_ID` = 'l5fvkBD94rIlLuP05j16I0VvEM7ZfncC'
LIMIT 0, 1
После этого полностью очистил таблицу b_sec_session и смог авторизоваться
После очистки таблицы также можно будет авторизоваться и исправить повреждения таблицы с помощью встроенных инструментов проверки системы
С чем это связано и как избежать в будущем?
Таблицы в БД могут повреждаться по разным причинам, лучше уточнить этот момент у администратора сервера/хостинга.
Чтобы увеличить надежность таблиц рекомендуется перевести их в формат InnoDB вместо MyISAM (если эта возможность поддерживается на хостинге). Модуль «монитор производительности» позволяет выполнить эту операцию из административного интерфейса.
Вот ещё чек-лист возможных проблем если пропадает авторизация
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=2167&LESSON_PATH=3906.4503.2167
Ещё статьи:
18.01.2023
Нюансы перехода битрикс на РНР 8.0
С февраля битрикс прекращает поддерживать РНР 7.4 и в битрикс сегменте сайтов начался переход на РНР 8 для получения обновлений.
Но без нюансов и ошибок…
ID: 431
10.01.2023
БУС окончательно всё?
Появилась информация от битрикс, что грубо говоря поддержка по отраслевому медицинскому решению от битрикс будет до 1 февраля 2024 года, а что потом б…
ID: 426
30.08.2022
Типовые претензии к подрядчику и к битрикс
По свежим следам я собрал типовые претензии к подрядчику и к битрикс. Мной был проведён аудит и я увидел, что техническое состояние сайта хорошее, нареканий…
ID: 338
Новые статьи в блоге:
Возврат к списку
hero:
но хостер мне написал дословную цитату выше, и на данный момент проблема в синтаксисе htaccess скорее у меня..
Все необходимые для работы изменения в .htaccess в доках описаны. А для запроса basic-авторизации есть и «другие места» кроме .htaccess
header('WWW-Authenticate: Basic realm="My Realm"');
hero:
Мы поменяли тариф у Агавы и прописали все согласно инструкциям,
т.е. при изменении тарифа файлы менялись (зачем, если всё работало раньше?)? Переезд был? В смысле, пути к файлам сменились? Версии софта, возможно, поменялись? IP-шник сменился? Кэш DNS на машине с 1С обновился?
p.s. Если прописали всё согласно инструкциям — должно работать.. За подробностями — если не к телепатам, то, возможно, к «битриксоидам» — возможно угадают быстрее.
p.p.s. я всё-таки отвечу на конкретный вопрос..
hero:
Подскажите что-как с прописанием юзера в хтакцесс..
Один из распространённых вариантов — указание пользователей через htpasswd файл и добавлением в .htaccess блока
AuthType Basic
AuthName AnyText
AuthUserFile /full-path-to/.htpasswd
require valid-user
p.p.p.s Если нет опасений — кидай доступы (к сайту, не к 1с) в личку.. а то так долго можно гадать, пока админ не объявится
17.03.2021
4453 Блог Интегратора
Вопросы надежности и безотказности работы программного обеспечения, помогающего развитию бизнеса, всегда стоят очень остро. Любые, даже самые незначительные ошибки в конечном итоге приводят к неприятностям и упущенной выгоде. Несмотря на то, что поставщики ПО прилагают большие усилия для того, чтобы избежать ошибок в работе своего продукта: активно тестируют приложения перед запуском, своевременно исправляют найденные недочеты — не всегда все бывает гладко.
Иногда возникают ситуации, когда поставщик ПО в силу разных причин не может быстро исправить проблему. Вместо этого он предлагает решения, которые могут быть выполнены пользователем самостоятельно. Конечно, это не относится к серьезным ошибкам, способным повлиять на безопасность или серьезно подорвать работу предприятия — чаще всего речь идет о неприятных мелочах, которые сильно раздражают, а в определенных случаях могут стоить потери клиентов.
Одной из таких ошибок является проблема с авторизацией в продуктах Битрикс. Она заключается в том, что в любой момент у пользователя портала может слететь авторизация и его выбросит из системы. Ошибка не представляет никакой опасности с точки зрения безопасности, но доставляет массу неприятностей работающим в системе людям. Сотрудники сбиваются с толку, отлаженный рабочий процесс начинает прерываться этой ошибкой.
Почему так происходит и что делать?
С подобной неприятной ситуацией к нам обратился один из наших клиентов. У сотрудников периодически слетала авторизация во время работы на портале «Битрикс». Мало того, что это оказывало негативное влияние на весь рабочий процесс, так еще и пугало. Что первым делом подумает менеджер, которого во время работы выбрасывает из системы? Что случилось что-то ужасное — его взломали, что все работает неправильно. Вылеты происходили из любого места: сайта, CRM-системы, подключенных приложений.
Когда мы начали разбираться, то выяснилось, что все предложенные поставщиком сервиса стандартные методы решения такой проблемы не дают никакого результата. Авторизация по-прежнему случайным образом слетала, и мы не могли найти этому никакого объяснения. Пришлось начать разбираться более серьезно и потратить на это большое количество времени. В итоге мы выявили причину и смогли повторить ее: проблема оказалась в переменной в cookie, и она актуальна для большинства систем, установленных на одном домене.
Подробное объяснение проблемы и решение
Как мы уже писали выше, эта ошибка связана с дублированием переменной PHPSESSID в cookie. Она возникает в том случае, когда для установки различных продуктов Битрикс используются поддомены одного домена. В качестве примера рассмотрим установку «1С-Битрикс: Управление сайтом» и «1С-Битрикс24: CRM».
Допустим, что в нашем распоряжении находится домен webmagazin.ru, на который мы устанавливаем «1С-Битрикс: Управление сайтом», а для установки CRM-системы мы будем использовать crm.webmagazin.ru. Это как раз тот случай, при котором возможны рандомные вылеты авторизации в системе. Никакие решения, предложенные в Битрикс, в нашем случае не помогали.
В процессе тестирования различных вариантов мы пришли к мнению, что в настоящее время лучшим решением является перенос продуктов на разные домены. К примеру: устанавливаем «1С-Битрикс: Управление сайтом» на webmagazin.ru, а для размещения CRM-системы используем отличный от webmagazin домен второго уровня. Например, webcrm.ru. На данный момент это единственное эффективно работающее средство, помогающее раз и навсегда избавиться от этой проблемы.
Насколько сложно все исправить?
Если у вас возникли проблемы с авторизацией: пользователей выбрасывает из системы, или они по нескольку раз не могут войти в нее, убедитесь, что ваши продукты установлены с соблюдением вышеупомянутых условий — разнесены по разным доменам. Если нет — не страшно. Мы сможем разнести по разным доменам установленные продукты «Битрикс» в самые короткие сроки без необходимости прерывать рабочие процессы, менять привычки, самостоятельно перенастраивать автоматизацию. Все будет работать так же как и прежде, за исключением того, что пропадет ошибка, вызывающая слет авторизации у сотрудников.
Мы более 10 лет занимаемся разработкой, доработкой, а также поиском и устранением ошибок в продуктах «Битрикс». У нас большой опыт, можно сказать, что мы знаем систему изнутри, в мельчайших деталях. Более того, мы не прекращаем ни на минуту совершенствовать свои знания о ней — мы развиваемся вместе с ней. Именно поэтому вы всегда знаем ответы на вопросы, которые не знают другие, а если готовых ответов нет — мы сами находим ответы.
Как починить авторизацию, которая начала постоянно слетать после обновления Битрикс
Обновлено: 23 апреля 2021
9491 просмотр
После очередного обновления Битрикса в ноябре 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, что бы обойти проблему — это плохая идея, которая вызовет трудноотлавливаемые проблемы.
Надеюсь, эта статья помогла решить вашу проблему!
Отсюда:
http://forum.hostdvor.com/viewtopic.php?f=35&p=119
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=1967 (офсайт)
Форматирование — оригинальное, так что все плевки о грязи в коде — в оригинал.
Ошибка: Не работает авторизация при обмене данными с 1С в Bitrix CMS.
Среда: php 5.3.8 as fcgi SAPI;
Решение: Часто проблема возникает в результате работы php в режиме FCGI (fast cgi).
В этом режиме есть проблемы с передачей данных авторизации HTTP в php. Проверить работу HTTP авторизации можете в админ. панели Битрикс -> Рабочий стол -> Настройки -> Инструменты -> Проверка сайта
или по прямой ссылке:
http://имясайта.com/bitrix/admin/site_checker.php
Для решения данной проблемы попробуйте выполнить такие действия:
1) В корне сайта в файл .htaccess добавьте строки:
- КОД: ВЫДЕЛИТЬ ВСЁ
RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
2) Закоментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:
- КОД: ВЫДЕЛИТЬ ВСЁ
#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>
3. В файл bitrix/php_interface/dbconn.php добавьте строки:
- КОД: ВЫДЕЛИТЬ ВСЁ
$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Внимание: на сервере должна быть включена поддержка rewrite rules и правил .htaccess.
Если пропадает авторизация пользователя
Урок
65
из
932
Сложность урока:
4 уровень — сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
4 из 5
Дата изменения:
23.05.2023
Просмотров:
101282
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Ограничений нет
Если пропадает авторизация пользователя |
Возможные причины проблемы:
-
Лишние переносы строк (или иные символы) в скриптах конфигурации.
-
Файлы с сессиями продукта создаются, но PHP не хватает прав, чтобы к ним обратиться.
-
Установлен лимит времени на бездействие пользователя, при превышении которого сессия удаляется.
-
Значение параметра Маска сети для привязки сессии в настройках безопасности группы пользователей.
-
Значение параметра
session.cookie_domain
в файле php.ini на сервере. -
Неверно прописан домен в настройках главного модуля и для сайта отдельно.
-
При переносе сайта не скопировался файл
/.access.php
. -
При многосайтовости вас выкидывает на форму авторизации при переходе по публичным страницам сайта.
-
Авторизация не учитывается на вашем домене.
-
Проблема в работе сервера (нужна поддержка сессий в php, должна быть указана папка сохранения сессий и права на запись в эту папку).
-
Проблемы авторизации при поддоменности на разных установках
Примечание: если работа в административном режиме прерывается появляющейся формой авторизации, то чтобы дать себе возможность что-то поправить в настройках сайта, после авторизации не совершайте никаких действий порядка 10-30 секунд, и, возможно, форма авторизации не появится.
Разместили проект не на выделенке, а на шареде. В целях, известных одному
Богу
хостеру, php там бегает не как mod_php, а как php-cgi/fcgi.
Сразу же после размещения проекта на хостинге советую проверить настройки сайта — /bitrix/admin/site_checker.php?lang=ru
По результатам проверки на себя обратила внимание ошибка HTTP-авторизации, в связи с тем, что в ее описании отмечено, что она мешает обмену с базой 1С и «другому функционалу».
И действительно — выгрузка не идет. Причина — скорее всего в отсутствии HTTP-авторизации. Решение для починки следующее:
1. Убеждаемся что на сервере есть mod_rewrite и прописываем в .htaccess строки:
RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
Вообще, в .htaccess, поставляемом с Битриксом эти строки уже есть, но убедиться лишний раз стоит.
2. Далее отключаем отключение (!) реврайта в административном разделе: комментируем в /bitrix/admin/.htaccess весь блок с модулем mod_rewrite:
#<ifmodule mod_rewrite.c> # RewriteEngine Off #</ifmodule>
3. В init.php дописываем код:
$remote_user = $_SERVER["REMOTE_USER"]? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', $strTmp);
Можно пробовать выгрузку. В моем случае все заработало.
Решение взято с сайта битрикса, там же описано еще несколько типовых проблем с выгрузкой из 1С.