пятница, 31 августа 2012 г.

1С-Битрикс: немного о настройках

Разместили проект не на выделенке, а на шареде. В целях, известных одному Богу хостеру, 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С.