Ошибка сохранения неправильный шаблон для сайта битрикс

Добрый день.
Добавлен поддомен x.domen.ru
В корне папки поддомена видны папки bitrix и upload

Создал в корне index.php такого содержания:
<?
require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/header.php»);
Битрикс ругается «Шаблон не найден.» имеется кнопочка «Установите шаблон для данного сайта».

Как сделать самомтоятельный шаблон данному сайту на поддомене?

При нажатии на кнопочку попадаю в папку создание сайта — при нажатии сохранить ошибка:

Ошибка сохранения
Неправильный шаблон для сайта

Как сделать чтобы у данного поддомена был свой шаблон? В какой папке его разместить?

1. Изменять все стандартное/Изменять содержимое папки bitrix

Изменение всего, что лежит в папке /bitrix/ — табу.

Если вам нужно изменить шаблон компонента — копируйте его в шаблон сайта.

Если вам нужно изменить компонент — используйте result_modifier.php, component_epilog.php (про них я подробно писал в этой статье), напишите свой компонент, в конце концов.

Если вам нужно изменить модуль — медицина бессильна пишите свой, наследуйтесь от стандартных.

Если вы не послушаетесь и дадите слабину хотя бы в одном – можете попрощаться с беззаботным обновлением платформы. А такая необходимость рано или поздно настанет. Не говоря о том, что искать файлы будет сложнее.

Для пользовательских модулей/компонентов/шаблонов/обработчиков должна использоваться папка /local/.

Добавляйте папку /bitrix/ в .gitignore. Если в вашем git репозитории есть файлы /bitrix/, значит, скорее всего, что-то вы делаете не так. Вы можете подумать, что есть исключения. Да, но прибегать к созданию чего-либо в папке Bitrix нужно только если по-другому никак.

2. Получать данные в template.php

Никогда, слышите, никогда не делайте этого! Я говорю о CIBlockElement::GetList (и подобных им функциях) в template.php.

Если вам нужно получить какие-то дополнительные данные используйте result_modifier.php или component_epilog.php. Серьезно. Все что Вам нужно — лишь создать файл в папке шаблона. Это займет не на много больше времени, чем писать код в самом шаблоне.

Шаблон должен быть использован только для вывода информации. Ни для чего больше. Если вычисления (получение дополнительных данных, их модификация) находятся в шаблоне, вы становитесь сильно зависимы от порядка выполнения кода.

Допустим, необходимо посчитать общее количество просмотров всех статей на странице и вывести значение. Если вы разместите вычисления в цикле вывода статей, полученное значение можно будет использовать только после последней статьи. Простая задача по переносу блока наверх страницы превратится в ад.

3. Неверное подключение скриптов и стилей сайта

Неправильное подключение стилей и скриптов Битрикс

Откройте свой сайт, найдите основной шаблон и откройте файл header.php.

Если вы видите что-то похожее — гоните Вашего разработчика взашей.

В Битриксе вполне неплохой механизм автоматического объединения и минификации скриптов, кроме того, Битрикс умеет перемещать JS в конец страницы, благодаря чему сайт быстрее грузится. Если кто вдруг не знал, вся эта годнота включается в настройках Главного модуля:

Настройка сжатия и объединения скриптов и стилей Битрикс

А теперь барабанная дробь. Ничего не получится, если вы подключали скрипты и стили дедовским способом.

Соберите скрипты из шаблона сайта, поместите их в JS файл, а потом подключите его с помощью
AddHeadScript().

Тоже самое касается и стилей. Если вам необходимо подключить стили, вынесите их в отдельный файл, а потом используйте
SetAdditionalCSS().

В итоге получится нечто похожее:

Правильное подключение скриптов и стилей Битрикс

…или, если вы используете D7, так:

Правильное подключение скриптов и стилей Bitrix D7

4. Неверное подключение скриптов и стилей компонента

Если с предыдущим пунктом все более-менее просто, исправить эту проблему гораздо сложнее. Давайте разбираться.

Допустим, для главной страницы сайта необходимо разработать слайдер с баннерами. Ок. Что может быть проще.

И Вы правильно подумали, что переносить стили (и скрипты) в основной шаблон сайта (/local/templates/[ваш сайт]/template_styles.css и /local/templats/[ваш сайт]/script.js) не стоит — иначе они будут подключаться на каждой странице.

Но многие разработчики просто помещают css и js в файл template.php шаблона компонента и на этом успокаиваются. Правильным же подходом будет создание файлов script.js и style.css в папке шаблона. Они подключатся автоматически и избавят от головной боли при разработке.

5. Отключение кеширования

Кеширование позволяет значительно снизить нагрузку на БД. Это более остро чувствуется при росте аудитории (и соответственно запросов к БД).

Обычная ситуация: верстальщику не нравится, что изменения стилей отображаются не сразу и он решает отключить кеширование отдельного компонента. Работа кипит, сроки горят и он (верстальщик) просто забывает включить кеширование обратно. Проходит время и страницы сайта начинают грузиться все дольше и дольше.

Мой совет: перед сдачей проекта прогнать сайт через монитор производительности. Он покажет ошибки в разработке и вам не придется искать проблемные компоненты вручную.

6. Вложенные циклы при получении элементов инфоблока

Очень часто при разработке нового компонента возникает необходимость получать данные из двух (или больше) связанных Инфоблоков.

Давайте рассмотрим пример: нужно получить список всех деталей, подходящих ко моделям автомобилей.

$dbModels = CIBlockElement::GetList(
    array(
        'SORT'  =>  'ASC',
        'NAME'    =>  'ASC',
    ),
    array(
        'IBLOCK_ID' =>  MODELS_IBLOCK,
        'ACTIVE'    =>  'Y',
    ),
    false,
    false,
    array(
        'ID',
        'NAME',
    )
);
while ($arModels = $dbModels->GetNext()) {

    $dbItem = CBIBlockElement::GetList(
        array(
            'SORT'  =>  'ASC',
            'NAME'  =>  'ASC',
        ),
        array(
            'IBLOCK_ID'             =>  ITEMS_IBLOCK,
            'ACTIVE'                =>  'Y',
            'PROPERTY_MODELS_VALUE' => $arModels['ID'],
        ),
        false,
        false,
        array(
            'NAME',
            'PROPERTY_COUNT',
            'PROPERTY_PRICE',
        )
    );
    while ($arItem = $dbItem->GetNext()) {
        //  TODO: какая-то работа
    }

}

Код упрощен для простоты восприятия, матерые разработчики найдут в нем сразу несколько ошибок;)

Суть в чем: чем больше на сайте будет моделей, тем больше будет SQLзапросов с получением данных о запчастях. Более правильным был бы такой вариант:

$dbModels = CIBlockElement::GetList(
    array(
        'SORT'  =>  'ASC',
        'NAME'    =>  'ASC',
    ),
    array(
        'IBLOCK_ID' =>  MODELS_IBLOCK,
        'ACTIVE'    =>  'Y',
    ),
    false,
    false,
    array(
        'ID',
        'NAME',
    )
);
while ($arModels = $dbModels->GetNext()) {

    $modelIDs[] = $arModels['ID'];

}

$dbItem = CBIBlockElement::GetList(
    array(
        'SORT'  =>  'ASC',
        'NAME'  =>  'ASC',
    ),
    array(
        'IBLOCK_ID'             =>  ITEMS_IBLOCK,
        'ACTIVE'                =>  'Y',
        'PROPERTY_MODELS_VALUE' =>  $modelIDs,
    ),
    false,
    false,
    array(
        'NAME',
        'PROPERTY_COUNT',
        'PROPERTY_PRICE',
    )
);
while ($arItem = $dbItem->GetNext()) {
    //  TODO: какая-то работа
}

В этом случае, вне зависимости от количества элементов инфоблока, будет всего 2 SQL запроса: получение моделей и получение деталей. А уже дальше в цикле должна быть проведена работа по распределению деталей на соответственные модели автомобилей.

Вообще, подобных ошибок очень много:

  • Использование сортировки там, где она не нужна;
  • Получение всех полей и свойств, даже если они не используются;
  • Программная реализация постраничной навигации (вместо механизма Битрикс);
  • Получение данных без учета активности элемента, раздела или дат активности и тд.

Перечислять все ушло бы очень много времени.

7. Бездумная разработка компонентов Bitrix

Не самым лучшим решением будет разрабатывать сайт целиком на самописных компонентах. Мотивация может быть разная: «Стандартный компонент делает слишком мало», «Стандартный компонент делает слишком много», «Шаблон слишком массивный, а в данных не разобраться», «Работает не так как я хочу», «Работает так как я хочу, но не очень».

Почему не стоит делать это? По целому ряду причин:

  • От ошибок никто не застрахован. Но в случае стандартных компонентов можно расcчитывать, что их рано или поздно исправят, а ваша (если вы разработчик) ответственность закончится после сдачи проекта.
  • Компоненты Битрикс в некоторых случаях сложны и запутаны. Сделано это ради гибкости. Уверен, если делать упор на универсальность, в конечном итоге компонент получится похожим на стандартный (а то и будет еще запутаннее:)).
  • Если в будущем изменится структура данных, логика работы, а бОльшая часть сайта была написана сторонними разработчиками, поддержка проекта превратится в настоящий ад с постоянным переписыванием десятка компонентов.

В общем, прежде чем приступить к созданию очередного компонента, задайте себе вопрос: «А не возникнет ли проблем у Заказчика через год или два?».

Вместо заключения

Конечно, это лишь малая часть тех ужасов, с которыми приходится сталкиваться, получая очередной проект на поддержку. Я постарался собрать самые часто встречаемые.

Как известно, не так давно вышла новая версия php 8 — замечательно! Исправлены недочёты предыдущих версий, внесены некоторые корректировки в язык программирования и т.п. словом, по заявлениям разработчиков — php стал много быстрее и безопаснее! Хорошо.

Но мы понимаем, что в php 8 ошибок больше и он медленнее, чем, скажем, грядущий php 9. Но это не суть… а суть в том, что наши сайты бесспорно нуждаются в модернизации! Например, многие, если изменяют на хостинге версию до обновленной, то сайты просто-напросто ложатся: белый экран. И, если у нас шаблон сайта не обновляется (и мы не используем дочернюю тему), то никто за нас исправления в код шаблонов не внесёт. Сайт не будет нормально работать!

Я за последнее время многим правил шаблоны под новый php. Пришло время написать небольшую статью по теме, как исправить ошибки шаблона сайта для php 8. Сделаю, на основе ваших пожеланий, видеоролик, в котором мы прямо на рабочем сайте от начала (когда сайт «ложится» и до конца (когда вновь заработает») поправим шаблон, так что пишите пожелания о темах, которые нужно включить в ролик (если тема версий php в связке с WordPress будет интересна, буду её расширять, дополнять. Так что жду откликов…).

  • нужно ли править шаблон под новые версии php?

  • написание кода, комментирование кода php — правила

  • подготовка шаблона к включению на сервере версии php 8

  • установим на сайте плагин Query Monitor

  • переходим к основному решению задач перехода сайта на новую версию php 8

  • ошибки или несоответствия кода шаблона для версии php 8

  • для владельцев магазинов на WooCommerce — ошибки сайта-магазина по версии php 8

нужно ли править шаблон под новые версии php?

Это вопрос достаточно глобальный по своей сути и вряд ли получится однозначно ответить, окромя сакраментального — каждый решает сам.

Однако по статье приведу несколько примеров, а вы уж делайте выводы.

К примеру, вы решили оставить для своего сайта устаревшую версию. идет время… плагины и вообще все окружающие веб мощности естественным образом обновляются… Вывод, через какое-то время ваш сайт откажется работать с обновленными плагинами и т.п. Вам придется сайт заморозить! т.е. использовать старый функционал. Хорошо это или плохо!? ответить трудно.

Если немного смыслите в сайтостроении — это одно дело, а если — нет, это совсем иное…

Думаю, как ни крути, но самое логичное — постепенно — приводить код шаблона в порядок.

В текущем посте дам несколько вариантов исправления ошибок по текущим версиям php. У вас, конечно, могут возникнуть какие-то иные ошибки… Пишите о них, поправим…

к оглавлению

написание кода, комментирование кода php — правила

…предположим, ваши сайты работали на php 7.4.

Для того, чтобы приступить к глобальным правкам шаблона, подготовим сайт на текущей старой версии:

Рекомендую создать копию сайта и выполнять правки на тестовом варианте сайта (как создать тестовый сайт за несколько минут).

Возможно, послужит пользой прочесть об истории обновлений версий Вордпресс.

к оглавлению

подготовка шаблона к включению на сервере версии php 8

О том, что плагины должны быть обновлены, разговор выведем за скобки — это и так ясно!

Первое, с чего начнем концерт, это обратим внимание на написание кода в шаблоне: php 8 строже относится к помаркам в коде. К неряшливому коду…

Проверьте файлы шаблона. Отнеситесь внимательнее к комментариям в коде.

Например, если в финале файла размещен какой то комментарий, то он должен быть обязательно соответственно закрыт. Иначе, как только переключитесь на 8-ку — сайт обрушится.

то есть должно быть /* коммент */.

Подробнее читать как закомментировать код HTML, CSS, PHP, JS (есть подробное видео).

к оглавлению

установим на сайте плагин Query Monitor

Устанавливаем и активируем плагин…

…и, конечно же, непосредственно перед правкой добавляем в константу  define('WP_DEBUG', true);  параметр true.

это в конфигурации сайта — в файле по пути /домен/public_html/wp-config.php — файл wp-config.php

Этап подготовки сайта для смены версии php считаем законченным.

к оглавлению

переходим к основному решению задач перехода сайта на новую версию php 8

Непременно включаем всё наше внимание!!

…и переходим в соответственный раздел настроек хостинга и переключаем сервер на php 8.

…как правило после смены версии сервера, сайт падает!!

Однако, мы подготовились…

Открываем, например, главную страницу сайта (фронтэнд) — ну или админку.

То, что мы используем в конфигурации сайта дебаггер… и плагин Query Monitor нас здорово выручит! В этом случае перед нашими глазами будет не молчаливый белый экран, но подсказки ошибок!!!

…на белом листе сайта появятся подсказки о возможных ошибках (у кого-то может быть сайт и не совсем сломается… то есть будут частично видны элементы сайта, но в любом случае дебаггеры укажут подсказки о возможных ошибках, с решения которых — методично — и приступаем к исправлению):

php 8 ошибки шаблона сайта

Проходим по указанным путям и выполняем правки шаблона. На этом этапе, как правило, указываются главные ошибки — на которых спотыкается сервер. Все их нужно исправить.

Скрин выше, как раз указывает на то, как я и говорил выше, что комментарий в финале кода шаблона не закрыт!!! Поправляем, если у вас что-то подобное…

Подробнее станем разбираться в видеорлике.

к оглавлению

ошибки или несоответствия кода шаблона для версии php 8

примеры ниже — только принципиальные примеры, возможные решения!

по мере испрвления ошибок шаблона — плагин Query Monitor подскажет о том, что в коде шаблона используется устаревшая функция, которая теперь вызывает фатальную ошибку в версии php 8:

Функция create_function() — достаточно частая ошибка в старых шаблонах.

Дело в том, что функция create_function() считается устаревшей и в более новых версиях php будет вызывать ошибки. Так в версии php 8 она вызовет фатальную ошибку.

Исправляем примерно такими вариантами:

Например, есть известный код (фильтр) относительно безопасности сайта — многие его используют:

// уборка ошибки неправильный логин/пароль для ранних версий php 8
add_filter( 'login_errors', create_function( '$a', "return null;" ));

данный фильтр в php 8 теперь вызывает фатальную ошибку!

Исправить create_function можно следующим образом: (заменяем create_function на анонимную функцию — подробности о функциях в этой статье опускаю).

Так:

// первый вариант для версий php 8 = будет пустое поле ошибки:
//add_filter( 'login_errors', fn()=> null );

либо так:

//2 вариант для версий php 8
function no_logs_s() { return 'Вы совершили ошибку при наборе данных'; }
add_filter( 'login_errors', 'no_logs_s' );
/*уборка ошибки неправильный логин/пароль*/

либо ещё один пример:

// неправильно - устаревший пример
if($this->options['general']['clean_exerpts']) {
add_filter('excerpt_more', create_function('', 'return "";') );
}

правильно:

// ИСПРАВЛЕНО:
if($this->options['general']['clean_exerpts']) {
add_filter('excerpt_more', fn()=> null ); }

create_function('', 'return "";') — заменим на: fn()=> null

к оглавлению

для владельцев магазинов на WooCommerce — ошибки сайта-магазина по версии php 8

Если вы работаете с плагином WooCommerce, то вам будет полезно примерно такой вариант решения (много решений — функции Wooc для владельцев магазина):

неправильно:

//число товаров на странице витрины МАГАЗИНА
add_filter('loop_shop_per_page', create_function('$cols', 'return 9;'));

правильно (как вариант):

// исправлено
add_filter('loop_shop_per_page', function( $cols ) { return 9; }, 20);

Этот пример: create_function('$cols', 'return 9;') заменим на: function( $cols ) { return 9;

То есть заместо устаревшей create_function() используем ананимную (альтернативную) функцию function().

И так далее… в подобном духе исправляем и остальные несоответствия в коде шаблона с обновленной версией php 8.

Обращайте внимание на добавленный в functions.php активного шаблона код из уруков на веб сайтах — код может иметь ошибки, которые в ранних версиях php более-менее отрабатывали.

…в кодах могут быть на первый взгляд незначительные ошибки, примеру неустановленные одинарные кавычки — всё это в новой версии php вызовет НЕ ТОЛЬКО неотработку отдельного кода, но и фатальную ошибку!

Напоминаю: в видео, которое сейчас готовлю, расскажу по исправлениям ошибок поэтапно. Опишите свои вопросы…

Подробнее об изменениях ЯПа модно почитать в обзоре (на хабре).

Как правильно закомментировать код HTML, CSS или PHP, JS

…вопросы в комментариях — помогу, в чём дюжу…
mihalica.ru !

Михаил ATs — владелец блога запросто с Вордпресс — в сети нтернет давным-давно…

…веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети… — заказы, вопросы… разработка…

В заметке собраны некоторые проблемы с Bitrix Framework и VMBitrix, а так же приведены способы их решения.

Важно: описанные ниже действия потенциально опасные и могут привести к неработоспособности вашего сайта, выполняйте их осознанно на свой страх и риск.

Прежде чем затронуть функциональность сайта не забудьте сделать бэкап.

Как уменьшить размер БД

Если база данных 1С-Битрикс разрослась и это не связно с количеством информации или товаров на сайте, то возможно базу раздувают записи Журнала событий, статистика модуля Веб-аналитика или другие таблицы.

Разросшуюся базу данных можно подчистить. Однако если 1С-Битрикс продолжает необоснованно расти, возможно проблема глубже и выходит за рамки данной статьи.

Как очистить статистику Веб-аналитики

В админке перейдите в Настройки > Настройки продукта > Настройки модулей > Веб-аналитика. В разделе Очистка статистики укажите до какой даты выполнить очистку (если оставить незаполненным, то будет очищена вся статистика) и нажмите кнопку Очистить.

Как удалить записи из Журнала событий

В настройках главного модуля, на вкладке Журнал событий, уменьшите количество дней для хранения событий. Чем меньше дней хранятся записи, тем меньше весит таблица. Дополнительно можно исключить типы событий, которые не нужно записывать в таблицу. База уменьшится не сразу, Битрикс потребуется некоторое время на удаление старых событий.

Более быстрый и радикальный вариант – очистить таблицу b_event_log через SQL-запрос. При этом будут удалены все события!

Если таблица не очень большая, выполните запрос через админку: Настройки > Инструменты > SQL запрос (или на странице you.site/bitrix/admin/sql.php).

DELETE FROM `b_event_log`;

Если таблица огромная (больше 4Гб), то скорее всего запрос не выполнится и отвалится по тайм-ауту. В таком случае выполнить запрос лучше из консоли MySQL на сервере, примерно так:

mysql -h you_sql_server -u root -p

USE you_db_name;

DELETE FROM `b_event_log`;

При большем размере придётся набраться терпения, очистка моей 9 гиговой таблицы заняла около часа.

К слову, поврежденную таблицу можно восстановить командой.

REPAIR table b_event_log;

Как очистить разросшуюся таблицу b_cache_tag

Перейдите в Настройки продукта > Автокэширование > Очистка файлов кэша.

Затем аналогично действиям описанным в предыдущем разделе выполните:

TRUNCATE TABLE b_cache_tag

Где изменить mbstring.internal_encoding и mbstring.func_overload

Значения mbstring.func_overload и mbstring.internal_encoding зависят от вашего сайта, используемой кодировки и проблемы, которую решаете.

Вариант 1 (для Apache и PHP ниже версии 7.3). Установить необходимые значения в файле .htaccess.

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8

Вариант 2 (так же для PHP ниже версии 7.3). Добавить параметры в файле настройки виртуальных хостов. Для Apache это:

  • /etc/apache2/sites-available/сайт.conf (если использется BitrixVM)
  • /etc/apache2/httpd.conf
  • /etc/apache2/apache2.conf
<VirtualHost *:80>
  ServerAdmin ...
  ServerName ...
  ServerAlias ...
  DocumentRoot "/путь/к/папке/сайта"

  php_admin_value mbstring.func_overload 2
  php_admin_value mbstring.internal_encoding UTF-8
</VirtualHost>

Вариант 3 (для всех версий PHP). Установить необходимые значения в php.ini, для BitrixVM /etc/php.d/z_bx_custom.ini. После внесения изменений нужно перезагрузить сервер.

Начиная с версии PHP 7.3  значение mbstring.func_overload нельзя установить индивидуально для конкретного сайта, ни через .htaccess, ни через конфигурационный файл Apache. Единственный вариант – установить значение mbstring.func_overload непосредственно в файле php.ini. Однако php.ini общий и если на сервере несколько сайтов, то они могут перестать работать, например если часть сайтов работает в кодировке UTF-8, а часть на cp1251.

Смена кодировки Битрикс на UTF8

Для PHP установите следующие параметры.

mbstring.func_overload 2
mbstring.internal_encoding UTF-8

Удалите модули Поиск без сохранения таблиц и Веб-аналитика (без сохранения таблиц, но с сохранением шаблонов сообщений).

Из словаря транслита в модуле Форум (Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита) удалить букву ё (ID = 7).

В настройках сайта изменить кодировку с windows-1251 на utf-8.

В файле /bitrix/php_interface/dbconn.php установить для константы BX_UTF значение true.

define("BX_UTF", true);

Скачать с сайта 1С-Битрикс скрипт convert_utf8.php, поместить его в корень сайта, затем запустить и дождаться полного выполнения.

Если база данных большая, конвертация может занять долгое время или вообще закончится неудачей. В таком случае попробуйте конвертировать базу данных вручную. Для этого в админке сайта на странице SQL-запрос выполните запрос:

SELECT CONCAT('ALTER   TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;') as

sqlcode

FROM `information_schema`.`TABLES` t

WHERE 1

AND t.`TABLE_SCHEMA` = 'database_name' ORDER BY 1

Где database_name – имя базы данных сайта.

В результате будет выведен новый запрос, который нужно скопировать и выполнить. По завершении таблицы базы данных будут переведены в кодировку UTF-8.

Далее пропишите в /bitrix/php_interface/after_connect.php:

$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');

В файл /bitrix/php_interface/after_connect_d7.php:

$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"'); 

В /bitrix/.settings.php:

return array (
  'utf_mode' => 
  array (
    'value' => true,
    'readonly' => true,
  ),

Затем полностью очистите кэш сайта.

Удалите более ненужный скрипт convert_utf8.php.

Заново установите модуль Поиск и сделайте переиндексацию.

Установите модуль Веб-аналитика (если использовали ранее).

Если возникли проблемы с сериализованными массивами возможно сможет помочь скрипт.

Дополнительные сведения на dev.1c-bitrix.ru и тема на форуме.

Если выкидывает из админки Битрикс

После ввода логина и пароля снова открывается страница авторизации

Первая причина – изменение прав доступа к файлам и папкам, точнее к папке хранения сессии пользователей. Такая проблема может наблюдается после смены хостинг-провайдера. В этом случае стоит проверить права записи в папку и откорректировать их.

Вторая причина – переполнения дискового пространства сервера. Очистите место на диске, удалите лишние бэкапы или докупите место (если это возможно) у своего хостинг-провайдера.

Периодически выкидывает из админки

Такое может происходить если в качестве DNS-сервера используется Cloudflare или аналог, например для использования SSL-сертификатов или защиты от DDoS. В этом случае, сессию обрывает механизм защиты Битрикс. Cloudflare подменяет ip-адрес пользователя и админка пресекает доступ. Для исправления внесите в dbconn.php следующие правки:

$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP'];

Однако после окончания работы в админке, лучше вернуть исходные настройки dbconn.php, ради безопастности.

Другой причиной вылетов, может быть наличие лишних символов или пробелов в файлах dbconn.php, after_connect.php, after_connect_d7.php, особенно в начале или в конце файла. Исправьте и проблема должна решиться.

Не отправляется почта

Если перестала отправляться почта на Яндекс

После многих лет пользования Яндекс.Почтой для отправки сообщений от интернет-магазина на Битрикс, почта перестала работать. В логах ошибка:

Sender or From header address rejected: not owned by authorized user

Одна из причин по которой это может произойти: адрес почты, под которой авторизируется сервер, отличается от почты (поле «From», «От кого») указанной на сайте.

Раньше такая схема вполне себе работала на Яндекс. В Битрикс можно было указать почту, например my@company.ru, при том, что сервер отправлял ее с ящика info@yandex.ru. Получатель письма все равно в отправителях видел почту my@company.ru.

Но начиная с 2020 года, Яндекс постепенно запрещает отправку писем если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере.

Решений несколько:

  • указать на сайте почту, под которой происходит авторизация на сервере, что в случае использования почты на Яндекс возможно будет не очень солидным;
  • поднять свой почтовый сервер и настроить отправку с него;
  • арендовать недорогой хостинг, который позволяет отправлять письма даже если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере. Например REG.RU предоставляет такую возможность, подойдет даже самый простой тариф дешевле 100 руб. в мес.

Свою проблему решил, выбрав третий вариант. Рекомендую хостинги:

  • REG.RU (промокод на скидку для заказа домена или хостинга: 2229-CC0A-AC4D-C31B)
  • Hostland (месяц бесплатно)

Логирование почты

Если проблему с почтой решить не получается, можно сделать логировщик для отлова писем с bxmail, который поможет понять проблему.

Добавьте в dbconn.php следующие строки.

// определим константу LOG_FILENAME, в которой зададим путь к лог-файлу
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/mylog-123.txt");

//дебаг почты
function custom_mail($to, $subject, $message, $additional_headers='', $additional_parameters='')
{
   AddMessage2Log(
            'To: '.$to.PHP_EOL.
            'Subject: '.$subject.PHP_EOL.
            'Message: '.$message.PHP_EOL.
            'Headers: '.$additional_headers.PHP_EOL.
            'Params: '.$additional_parameters.PHP_EOL
         );
   if ($additional_parameters!='') {
      return @mail($to, $subject, $message, $additional_headers, $additional_parameters);
   } else {
       return @mail($to, $subject, $message, $additional_headers);
   }
}

Теперь, при отправке письма в лог будут писаться сообщения.

Проблемы с отправкой уведомления о заполнении веб-форм

Для начала проверьте, настройки почтового события заполнения формы и его шаблона. Откройте Панель управления > Настройки > Настройки продукта > Почтовые события > Типы событий и выберите интересующее событие.

На вкладке Тип события, убедитесь, что отмечены галочки возле используемых на сайте кодов языка.

Тип почтового события Битрикс

На вкладке Шаблоны должен задан хотя бы один шаблон. Перейдите в шаблон кликнув на его идентификаторе или откройте его из списка шаблонов: Панель управления > Настройки > Настройки продукта > Почтовые события > Почтовые шаблоны.

В настройках выбранного почтового шаблона, должна стоять галочка Активен, и выбран хотя бы один сайт. Также должны быть корректно заполнены поля От кого и Кому (значения по-умолчанию #DEFAULT_EMAIL_FROM# и #EMAIL# соответственно).

Редактирование почтового шаблона

Если указанные настройки соответствуют истине, попробуйте в настройках модуля веб-формы отключить флаг Использовать упрощенный режим. В настройках формы, на вкладке Дополнительно убедитесь, что проставлен флаг привязки к почтовому шаблону.

Если не помогло, перейдите в Настройки > Инструменты > SQL-запрос и выполните следующий запрос:

select * from b_event where event_name like '%form%' order by date_insert desc

Найдите событие заполнения формы, поле SUCCESS_EXEC:

  • Y – сообщение отправлено, дальнейший его путь сможет определить администратор хостинга или почтового сервера;
  • N – сообщение не отправлено. Проверьте файл /bitrix/php_interface/dbconn.php на наличие констант BX_CRONTAB и BX_CRONTAB_SUPPORT, уберите их если они присутствуют, затем выполните SQL-запрос еще раз. Если и после этого SUCCESS_EXEC равен N, попробуйте очистить кэш /bitrix/managed_cache/.
  • F – функция mail вернула False при отправке. Смотрите логи. Возможно почта на хостинге (сервере) не настроена или настроена некорректно, решается хостером или администратором сервера. Другая причина, почтовый сервер не поддерживает формат письма. Попробуйте изменить настройки отправки в Главном модуле: убрать/поставить галку Дублировать email адрес в заголовке, убрать/поставить галку Конвертировать 8-битные заголовки.
  • 0 (ноль) – не корректные настройки типов событий или в почтовом шаблоне. Проверьте настройки как указано в начале.

Ошибка БД после переноса на другой хостинг

Одна из типичных ошибок после переноса на другой хостинг, например такая:

2016-05-25 15:33:22 - Host: host:80 - UNCAUGHT_EXCEPTION - [Error]
Call to undefined function BitrixMainDBmysql_connect() (0)
/home/bitrix/www/bitrix/modules/main/lib/db/mysqlconnection.php:45
#0: BitrixMainDBMysqlConnection->connectInternal()...

Может быть вызвана сменой СУБД с MySQL на MySQLi или наоборот.

Чтобы исправить нужно перенастроить подключение к БД, отдельно для старого и нового ядра.

В случае с MySQLi

В файле bitrixphp_interfacedbconn.php

define("BX_USE_MYSQLI", true);

В файле bitrix.settings.php поменять класс соединения с базой на MysqliConnection.

'connections' =>
    array (
        'value' =>
        array (
            'default' =>
                array (
                    'className' => 'BitrixMainDBMysqliConnection',
                    'host' => 'localhost',
                    'database' => 'database',
                    'login' => 'login',
                    'password' => '*****',
                ),
        ),
    ),

В случае с MySQL соответственно

В файле bitrixphp_interfacedbconn.php

define("BX_USE_MYSQLI", false)

В файле bitrix.settings.php поменять класс соединения с базой на MysqlConnection.

'connections' =>
    array (
        'value' =>
            array (
            'default' =>
                array (
                    'className' => 'BitrixMainDBMysqlConnection',
...

После изменения настроек, сайт должен заработать.

Ошибка: innodb_strict_mode=ON, требуется OFF

Ошибка может появиться при проверке системы. Для исправления воспользуйтесь одним из двух вариантов.

Вариант 1. Через конфигурационные файлы Битрикс.

В файл /bitrix/php_interface/after_connect.php добавьте сторку:

$DB→Query("SET innodb_strict_mode='OFF'");

В файл /bitrix/php_interface/after_connect_d7.php

$connection→queryExecute("SET innodb_strict_mode='OFF'");

Вариант 2. Через конфигурационные файлы MySQL.

Откройте конфигурационный файл MySQL (три возможных варианта расположения):

  • /etc/my.cnf
  • /etc/alternatives/my.cnf
  • /etc/bitrix-my.cnf

Добавить строку в блоке # InnoDB parameters

innodb_strict_mode = OFF

Повторно запустите проверку системы, ошибка должна исчезнуть.

Ошибка: Переменная sql_mode в MySQL должна быть пустая

Ошибка может появиться при проверке системы, когда параметр sql_mode задаёт режим работы MySQL, несовместимый с Битрикс.

Для исправления, добавьте указанные ниже строки в конфигурационные файлы.

В файл /bitrix/php_interface/after_connect_d7.php

$connection = BitrixMainApplication::getConnection();
$connection->queryExecute("SET sql_mode=''");

В файл /bitrix/php_interface/after_connect.php

$DB->Query("SET sql_mode=''");

Повторно запустите проверку системы, ошибка должна исчезнуть.

Недоступны файлы для чтения и записи

Если при проверке доступа к файлам 1С-Битрикс (Настройки – Инструменты – Проверка сайта – Проверка доступа) появляется ошибка: Недоступны для чтения или записи (показаны первые 10), это значит на сервере неверно настроены права для сайта.

Bitrix Files Access Denied

Причины могут быть разные, чаще это происходит если какие то файлы создавались, распаковывались или перемещались пользователем, к файлам которого 1С-Битрикс не имеет доступа.

Чтобы ошибка исчезла, нужно сделать владельцем файлов и папок пользователя bitrix, а права назначить как 775 для папок и 664 для файлов.

Следующая команда сделает владельцем файлов и папок пользователя bitrix в указанном каталоге (у вас он может быть другим). Как правило это /home/bitrix/www/ для основного сайта и/или /home/bitrix/ext_www/папка_сайта/ для дополнительных.

chown -R bitrix:bitrix /home/bitrix/www/

Ключ -R означает рекурсивно, т.е. включая вложенные папки и файлы.

А следующие команды выставят правильные права на доступ к файлам и папкам.

cd /home/bitrix/www
find . -type d -exec chmod 775 {} ;
find . -type f -exec chmod 664 {} ;
find . -type d -exec chown bitrix:bitrix {} ;
find . -type f -exec chown bitrix:bitrix {} ;

Затем выполните проверку повторно, ошибка должна исчезнуть.

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.

Дело не в правах скрипта (.access.php), а в физических правах на директорию.
Например в Bitrix Env есть linux пользователь bitrix (UID:600), из-под которого выполняются все операции, но многие неквалифицированные разработчики работают из-под root-доступов.

В папку созданную root пользователем нельзя скопировать файлы из-под пользователя bitrix, если ей не установить соответствующие права.

Ознакомьтесь с соответствующей статьей в документации: https://dev.1c-bitrix.ru/learning/course/index.php…

Благодаря Андрею разобрался в проблеме! Дело в том что сайт битрикса работает под пользователем «bitrix». А я загружал папку local через FileZilla под пользователем root. У root прав больше чем у bitrix, поэтому сайт битрикса не мог скопировать компонент в папку local. Как только я загрузил файлы через FileZilla с пользователя bitrix, все заработало!

Почему появляется ошибка?

Это классическая ошибка прав доступа к файлам и папкам.

Она заключается в том, что сайт не может получить доступ (чтение и/или запись) у указанным файлам и папкам.

Обычно, это происходит вследствие того, что указанные файлы были созданы от имени другого пользователя системы (не путать с пользователями Битрикс). Это может быть как в прямом случае (пользователь вошел через FTP, SSH или файл-менеджер на хостинге и создал файл от своего имени), так и в косвенном — обычно это бывает, когда выполнение агентов настроено на крон, а запуск задачи крона выполняется от имени root — в таких случаях, если агенты создают какие-то временные файлы или файлы кеша — эти файлы не смогут быть перезаписаны при обычной работе сайта.

На что эта ошибка влияет?

Данная проблема приводит в ошибкам при работе с файлами.

Например, если страница (файл) публичной части недоступна для записи, то невозможно будет редактирование этой страницы средствами Битрикс — это будет приводить к ошибке: «Ошибка при сохранении файла скрипта. Изменения не сохранены».

Как исправить ошибку?

Чтобы исправить ошибку, нужно изменить права доступа каждого файла/папки — поочередно, либо сразу на весь сайт (это можно сделать командой через SSH-подключение). При этом необходимо помнить, что права должны быть не 777, а те, которые указаны в /bitrix/php_interface/dbconn.php — обычно 644 для файлов и 755 для папок.

Требуется наша помощь?

Мы имеем огромный опыт, на протяжении 10 лет помогая клиентам в решении самых различных проблем на их сайтах.

Поэтому, если Вы не имеете возможности решить эту проблему самостоятельно, обращайтесь к нам — мы все сделаем оперативно и квалифицированно.

 

Пользователь 92039

Посетитель

Сообщений: 54
Баллов: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.05.2011

Здравствуйте.

Мне достался готовый сайт. Версия — «1С-Битрикс: Управление сайтом 11.5.1»
Контент лежит прямо в файле index.php. Когда пытаюсь его отредактировать (захожу в «Файлы и папки» и нахожу в поиске index.php), получаю «Ошибка при создании файла». Поначалу подумалось, что дело в правах, поставила на index.php права 777, всё равно такую же ошибку получаю. М.б. вместе с index.php ещё какие-то файлы редактируются и проблема в них?

 

Пользователь 88565

Посетитель

Сообщений: 118
Баллов: 9
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 13.04.2011

 

Пользователь 92039

Посетитель

Сообщений: 54
Баллов: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.05.2011

#3

0

10.04.2013 12:52:17

Цитата
al.builov пишет:
Права на доступ продукта посмотри.http://www.1c-bitrix.ru/products/cms/security/access.php

У меня в «Структуре сайта» в «Контенте» нет пункта «Управление». Наверное, документация для более поздней версии системы.
Права кроме как на сам файл по FTP нужно ещё и в системе ставить?

 

Пользователь 95726

Эксперт

Сообщений: 742
Баллов: 61
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 06.07.2011

#4

0

10.04.2013 13:10:37

Цитата
Topacio пишет:
Права кроме как на сам файл по FTP нужно ещё и в системе ставить?

Так и редактируй по FTP.  Сдался тебе этот редактор.

Цитата
Topacio пишет:
М.б. вместе с index.php ещё какие-то файлы редактируются и проблема в них?

М.б. если включаемую область редактируешь например.

 

Пользователь 92039

Посетитель

Сообщений: 54
Баллов: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.05.2011

#5

0

10.04.2013 13:15:50

Цитата
Suntechnic пишет:

Цитата
Topacio пишет:
Права кроме как на сам файл по FTP нужно ещё и в системе ставить?

Так и редактируй по FTP. Сдался тебе этот редактор.

Это не для меня всё делается, а для сеошника, который привык работать с редактором. Так что надо разобраться.
По поводу включаемой области — а если редактируется файл index.php разве затрагиваются файлы, которые он включает?

 

Пользователь 95726

Эксперт

Сообщений: 742
Баллов: 61
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 06.07.2011

Ну если из админки, то нет. А если непосредственно со страницы, то да.

 

Пользователь 92039

Посетитель

Сообщений: 54
Баллов: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.05.2011

Я редактирую из админки.
«Ошибка при создании файла» возникает при попытке отредактировать любой файл из корня сайта. Когда захожу в любую папку и пытаюсь отредактировать файлы там, то всё нормально. Я уже какие только права не ставила, и хозяина файла меняла с апача на рут, никакого толку.
М.б. дело в хостинге? Или из панели управления права на корневые файлы можно поправить? Подскажите, кто сталкивался!

 

Пользователь 173519

Эксперт

Сообщений: 493
Баллов: 51
Авторитет:

0

Рейтинг пользователя:

1

Регистрация: 30.03.2013

На хостинге clodo имею аналогичную ошибку, создал включаемую область на сайте по фтп, в структуре сайта показывает полный доступ на права системы, но при редактировании пишет «Ошибка при создании файла».

Пришлось создавать файл через админку, тогда все работает.

Разработка интернет магазина под ключ на 1С-Битрикс www.electroid.org, интеграция битрикс и 1С.

 

Пользователь 37620

Эксперт

Сообщений: 2549
Баллов: 226
Авторитет:

6

Рейтинг пользователя:

7

Регистрация: 13.02.2009

для СПАСИБО на форуме есть КНОПКА!

#9

1

25.09.2013 17:26:52

Цитата
Дмитрий Ипатов пишет:
На хостинге clodo имею аналогичную ошибку, создал включаемую область на сайте по фтп, в структуре сайта показывает полный доступ на права системы, но при редактировании пишет «Ошибка при создании файла».

Пришлось создавать файл через админку, тогда все работает.

такое бывает, если у вас веб сервер и фтп под разными юзерами работают.

Сайт Startup’а — адаптивная Bootstrap вёрстка, композит, микроразметка. бесплатно

 

Пользователь 266000

Заглянувший

Сообщений: 14
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.10.2014

#10

0

19.07.2020 20:41:11

Здравствуйте!
В меню добавляю пункт, связываю с файлом
пишет ошибка при создании файла.
ранее другой пункт меню создавал не было ошибки.
создаю со стороны сайта при включенном режиме правки.
подскажите как быть.
_________________________________
Помогите «захватить» мир, Hello

 

Пользователь 1497169

Заглянувший

Сообщений: 1
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 01.10.2020

#11

0

24.08.2022 13:02:24

Добрый день.

Столкнулись с аналогичной проблемой.
При попытке настроить меню сайта возникает ошибка «Ошибка при создании файла», как на скриншоте выше. Такая же ошибка возникает при попытке настроить SEO через системное меню в режиме правки.(Изменить страницы > Заголовок и свойства страницы). При переходе из режима правки в панель управления ошибка не возникает, но внесённые изменения не сохраняются.

 

Пользователь 1947629

Эксперт

Сообщений: 862
Баллов: 176
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 18.04.2018

#12

0

24.08.2022 16:01:59

место кончилось?

Данная проблема в Битриксе может появляться при отсутствии нужных прав на каталоги и файлы. В моём случае проблема возникла при многосайтовости, до этого всё было в порядке, но спустя какое-то время после длительной работы, появилось ограничение. За время поиска решения этой задачи, я нашел несколько решений и думаю, что один из вариантов Вам поможет справиться с данной проблемой. 

Первое что необходимо сделать — это проверить права на файлы и папки в нужном каталоге. Права на папку должны быть 755, на файлы 664. Ни в коем случае не выставляйте права 777 на папки или файлы, даже на время. 

В моём случае этот метод не сработал, я стал копать дальше. Нашел такой совет. в файле /bitrix/php_interface/dbconn.php установить такие константы. 

define( "BX_FILE_PERMISSIONS", 0660 );

define( "BX_DIR_PERMISSIONS", 0775 );

@umask( ~BX_DIR_PERMISSIONS );

@ini_set( "memory_limit", "512M" );

Но этого не потребовалось, т.к. эти значения уже были заданы и по идее всё должно было работать. На одном из форумов посоветовали изменить права доступа и владельца к нужной категории через консоль. Но я посчитал, что если всё до этого работало, то не нужно так далеко залазить, проблема явно была в не в этом, для Вас приведу код в котором можно изменить права доступа к каталогам и файлам через консоль. Говорят может помочь. 

find . -type d -exec chmod 775 { } ;

find . -type f -exec chmod 664 { } ;

В моём случае решение оказалось куда проще.  Все сайты лежали в корневой директории, один из них являлся общим ядром. Но по какой-то причине прекратился общий доступ к «главному сайту» и всё что нужно было сделать — это открыть доступ.

Поскольку сайты на учётных записях закрыты процессы, запущенные на одном сайте, не имеют прав для обращения к каталогам, выходящим за пределы этого сайта. Для доступа из окружения веб-сервера потребуется открыть общий доступ к каталогу. Мой проект находится на beget и эта операция делается очень просто через файловый менеджер.

  1. Зайдите в нужную директорию
  2. В верхней части экрана нажмите на кнопку “Инструменты” -> “Настроить общий доступ к текущей директории”: 
  3. Установите переключатели “Чтение и запись” и “Включая вложенные папки”, нажмите кнопку “Открыть доступ”: 

Если представленные варианты не принесли желаемого результата,  то пишите в комментарии, будет время, что-нибудь придумаем. 

Нет. Такие же не надо.
Надо посмотреть от чьего имени работает веб сервер. Тут вообще битрикс не при чем. У вас пробема в том, что все файлы доступны только root и вебсервер не имеет к ним доступ. Попробуйте в каталоге — корне сайта (в терминале через ssh) выполнить команду

там увидите у файлов кто владелец группа. Я так понимаю у части root:root, но у некоторых должно быть нечто другое. Например bitrix:bitrix, www-data:www-data или иное… Тут уже зависит от дистрибутива линукса развернутого на сервере, предыдущего админа и т.п. Вот вам нужно ходить через ftp именно под этим пользователем. (Да и по ssh под root лучше не ходить — обычно это запрещают, а при необходимости логинятся обычным, и уже в терминале меняют пользователя на root)

Ну и необходимо будет поменять права к файлам. Для этого находясь в терминале в корне сайта под root. Выполните (в примере имя искомого пользователя bitrix и группа bitrix:

Bash
1
chown -R bitrix:bitrix ./*

Но вообще с этим со всем надо аккуратно… Лучше пригласить специалиста. Наверняка на том же хостинге есть услуга помощи админа.

Добавлено через 56 секунд
PS Вопрос, кстати, ваш скорее не для этого раздела. Т.к. битрикс относится лишь косвенно.

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

Инфоблоки

Решение типовых проблем не требует вмешательства программистов. Контент-менеджер в большинстве случаев может разрешить их самостоятельно. Самые частые ошибки совершаются при работе с информационными блоками. Это естественно, так как в инфоблоках хранится большая часть информации на сайте. Описание ошибок даётся в формате: Проблема > ошибка > решение, чтобы вам было проще перейти к исправлению ситуации.

Типовые проблемы:

  • Выводится сообщение: У вас нет прав на просмотр.
  • На странице не выводится информация, добавленная в поля свойств элемента инфоблока.
  • В форме добавления элементов не видны добавленные свойства инфоблока.
  • Как добавить новые свойства в форму создания элемента.
  • Выводится сообщение: Неверный тип файла.
  • Выводится сообщение: Превышен максимальный размер.
  • Выводится сообщение: элемент не найден.
  • Количество сообщений (тем форума, новостей, количество фотографий и т.д.) на странице не совпадает с количеством, указанном в настройке компонента.
  • Проблема: выводится сообщение:

    «У вас нет прав на просмотр …»




    .

    Ошибка: ненастроенные права доступа к детальной информации: новостей и фотогалереи.

    Решение: Настроить группы пользователей для доступа в настройках комплексного компонента в группе параметров Дополнительные настройки:

    Нажмите на рисунок, чтобы увеличить

  • Проблема: На странице не выводится информация, добавленная в поля свойств элемента инфоблока. Например, добавляется информация в поле Производитель и Материал, а она

    не видна у товара

    Нажмите на рисунок, чтобы увеличить


    .

    Ошибка: в настройках компонента не указаны свойства инфоблока, которые должны отображаться на данной странице.

    Решение: В настройках параметров инфоблока указать какие свойства должны отображаться. Для этого надо сначала понять на какой странице не выводятся нужные свойства: на детальной странице товара или на странице списка товаров. Отличить не трудно: на странице списка товаров выводятся все товары раздела. На странице детального отображения товара — только выбранный товар. Соответственно нужно выбирать свойства для показа в нужной секции настроек компонента.

    Нажмите на рисунок, чтобы увеличить

  • Проблема: В форме добавления элементов не видны добавленные свойства инфоблока.

    Ошибка: добавленное свойство либо неактивно, либо свойство не выведено в измененной (кастомизированной) форме добавления элемента.

    Решения:

    • активируйте свойство в форме редактирования инфоблока (Контент > Инфоблоки > Типы инфоблоков > _ваш_тип_инфоблока > _ ваш_инфоблок_) на закладке Свойства.

      Нажмите на рисунок, чтобы увеличить

    • добавьте новые свойства в форму создания элемента, как это рассказано в курсе Администратор. Базовый.

    Прав контент-менеджера на эти операции может не хватить. В этом случае обратитесь к администратору сайта.

  • Проблема: При создании элемента инфоблока не удается прикрепить файл, выводится сообщение: Неверный тип файла. При этом не происходит сохранение элемента.

    Ошибка: в свойствах инфоблока типа Файл не указаны разрешенные для загрузки форматы.

    Решение: разрешенные форматы указываются на закладке Свойства формы настройки инфоблока (Контент > Инфоблоки > Типы инфоблоков > _ваш_тип_инфоблока > _ ваш_инфоблок_). В строке свойства типа Файл с помощью кнопки […] вызовите форму детальной настройки свойства и в поле Типы загружаемых файлов введите нужные форматы или выберите форматы в выпадающем списке:

  • Проблема: Не удается прикрепить файл к элементу инфоблока, выводится сообщение: Превышен максимальный размер файла. При этом не происходит сохранение элемента.

    Ошибка: ограничения администратора сайта на размер загружаемого файла.

    Решение: Для снятия этого ограничения необходимо обратиться к администратору сайта.

  • Проблема: При переходе из списка элементов к странице детального просмотра появляется сообщение:

    Элемент не найден




    .

    Ошибка: неправильно формируется адрес страницы (не передается идентификатор открываемого элемента или в настройках компонента ошиблись).

    Решение: проверить настройки компонента в группе параметров Управление адресами страниц или обратиться к администратору сайта.

  • Проблема: Количество сообщений (тем форума, новостей, количество фотографий и т.д.) на странице не совпадает с количеством, указанном в настройке компонента.

    Ошибка: в настройках используемого компонента отмечена опция Использовать обратную постраничную навигацию. В этом режиме происходит вывод страниц в обратном порядке (последняя страница становится первой).

    Нажмите на рисунок, чтобы увеличить

    Решение: исправить настройки компонента в группе параметров Настройки постраничной навигации.

    Необязательная информация: зачем нужна обратная навигация

Назад в раздел

Подписаться на новые материалы раздела:

  • Ошибки на стороне веб-сервера
  • Ошибки при работе с файлами данных
  • Проблемы авторизации
  • Ошибки MySQL
  • Логические ошибки
  • Диагностика отладки
    • Отладка обмена на стороне 1С-Битрикс
    • Модуль отладки обмена от ИНТЕРВОЛГИ
  • Выводы

Настроить обмен между «1С» и «1С-Битрикс» интернет-магазина или сайта – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес.

Даже с учётом имеющейся документации по продукту, у многих разработчиков сайтов возникают сложности в корректной настройке обмена данными между этими системами. Рассмотрим самые частые проблемы, которые возникают у тех кто пытался.

Мы выделили несколько групп ошибок:

  • проблемы авторизации;
  • ошибки на стороне сервера;
  • ошибки при работе с файлами данных;
  • ошибки MySQL;
  • логические ошибки.

Далее мы детально рассмотрим сами ошибки и способы их исправления.

Ошибки на стороне веб-сервера

К этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP.

Возможны 2 варианта:

  • Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.
Название ошибки Как исправить
Failed sending data to the peer (no headers, no data)‏.
  1. Увеличить значения параметров max_execution_time и memory_limit. в файле php.ini
  2. Перезагрузить сервер.
  3. Повторить выгрузку.
Получен пустой ответ сервера.
Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…)‏. Проверить настройку memory_limit в php.ini. Должно быть указано не менее 512Mb, увеличить значение и перезагрузить сервер. Или не изменяя настройки сервера сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). Если проблема с нехваткой памяти, данное решение не подойдёт.
  • Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).

Способы решения:

  1. уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
  2. временно закомментировать обработчики событий в файле /bitrix/php_interface/init.php, может быть они мешают обмену.

Ошибки при работе с файлами данных

Данные ошибки возникают при неверной настройке прав доступа к файлу. Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Возможные причины и их решение:

Название ошибки Как исправить

Закончилось место на диске.

Удалить старые бэкапы или увеличить тариф на хостинге.

По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет.

Обратиться в техническую поддержку хостинг-провайдера.

Не работает или некорректно работает сжатие данных при обмене.

Для начала можно попробовать выключить сжатие в настройках модуля обмена.

Также можно проверить работу функции zip_open на сервере

Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php (Либо выполните команду

if (exist_function (“zip_open”)){ echo “OK”; }

В браузере отобразится таблица:

Для строки ZIP должно стоять «enabled».

Проблемы авторизации

Самая распространённая проблема, если пользователь не указал данные или указал их неверно.

Название ошибки Проблема / как исправить

«Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль, а также настройки подключения к Интернет».

На сервере 1С установлено ПО, которое блокирует исходящие соединения, в этом случае при попытке обмена выдаётся ошибка. Исправляется добавлением адреса сайта в белый список ПО.

«Авторизация не выполнена.

Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль».

Неверно указаны логин/пароль доступа к сайту.

Надо проверить, получается ли по указанному доступу зайти на сайт.

И проверить наличие редиректов при переходе по ссылке, например на https версию сайта.

Если по ссылке

http:// адрес сайта /bitrix/admin/1c_exchange.php

появляется сообщение, значит с логином и паролем всё в порядке.

Ошибки MySQL

Ошибки возникают при соединении с базой данных MySQL, настроенной на сайте.

Название ошибки Проблема / как исправить

[Illegal mix of collations (russian_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’]

Конфликт кодировок. Причина ошибки — таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в russian и новые таблицы создаются в не russian. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке russian.

Логические ошибки

Ошибки пользователей неверно понимающих процесс обмена данными и, соответственно, неверно выполняющих какие-то действия.

Название ошибки Проблема / как исправить

Несовместимые версии модуля обмена и базовой конфигурации 1С.

Проверить на официальном сайте “1С-Битрикс” соответствие версий продуктов.

Если версии не совпадают, переустановить модуль обмена на стороне 1С

«Изменения товаров не зарегистрированы. Выгрузка товаров не произведена».

Неверно настроен отбор товаров в модуле обмена. Надо проверить эти настройки. Скорей всего, выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки.

Также это сообщение выдаётся, если если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена. В этом случае это не ошибка, а выгрузки не произошло, потому что данные со стороны 1с не были изменены.

«Не удалось найти вид номенклатуры».

Ошибка появляется, если в «1С» нет видов номенклатуры «Услуга» и «Товар». Эти виды критичны для процесса обмена данными с сайтом. Решение – создать в «1С» указанные виды номенклатуры.

«Поле объекта не обнаружено».   

Не указаны соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Два поля «Полное Название» и «Название» критичны для 1С. Если их не задать, экспорт выполняться не будет. Настройка соответствий для разных типов плательщиков производится отдельно.

Данные выгружаются на сайт, но не обновляются.

На сайте используют контрольные суммы для ускорения обмена, а на стороне 1С программисты обычно забывают их пересчитывать, когда пытаются доработать модуль обмена. Проверяется отключением контрольных сумм на сайте. Обмен становится дольше, поэтому надо заставить специалиста 1С вернуть отключенную настройку.

Диагностика отладки

Мы применяем два инструмента отладки обмена между 1С и 1С-Битрикс.

Отладка обмена на стороне 1С-Битрикс

При настройке выгрузки необходимо проверить существование папки /upload/1c_catalog/. В эту папку будут загружаться файлы при обмене.

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

Включить «режим отладки» можно отредактировав файл dbconn.php. А именно, создать константу такого вида: define(«BX_CATALOG_IMPORT_1C_PRESERVE», true).

На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку.

Модуль отладки обмена от ИНТЕРВОЛГИ

Для упрощения диагностики мы создали модуль отладки обмена.

Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить, где ошибка и исправить её. Отображение логов происходит в административной части сайта.

Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он:

  • следит за размером и в результате его работы не закончится место на сайте;
  • логирует обмен справочников и заказов;
  • логирует время обмена и время выполнения одного шага.

Выводы

Если не разбираться в вопросе и попытаться исправить обмен, то можно сделать только хуже и придётся или переписывать код модуля или ставить модуль обмена заново.

Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим.

Вам может быть интересно:

  • Tutorial по стандартному и нестандартному обмену сайта с 1С. Часть первая: стандартный обмен и его хитрости.
  • Tutorial по обмену сайта с 1С. Часть вторая: зачем и как писать свой обмен с нуля на очередях и REST API.
  • Tutorial по обмену с 1С. Часть третья: Выжимаем максимум из стандарта. Что мы хотели бы знать 1000 проектов назад.
  • Tutorial по обмену с 1С. Часть четвертая: Обмен через промежуточную базу данных.
  • Tutorial по обмену с 1С. Часть пятая: Наш опыт настройки 1000 и 1 обмена.

При работе с синхронизированными папками на Битрикс24.Диске могут возникнуть несколько типичных ошибок. Давайте рассмотрим, из-за чего они случаются и как решить возникшую проблему.

Две версии файла

Ошибка при загрузке на диск.png

Данная ошибка возникает при попытке двух пользователей загрузить обновленную версию какого-то файла из синхронизированной папки на диск.

Например, вы и ваш коллега одновременно редактируете один и тот же файл. Но он закончил раньше вас и уже сохранил его. Таким образом, на диске уже появилась новая версия документа, отличная от той, с которой вы начали работать. Данная ошибка и возникнет, когда уже вы попытаетесь его сохранить.

В таком случае, чтобы труд одного из вас не пропал даром, система не заменит файл, а сделает его копию. Потом вы сможете либо объединить их вручную, либо выбрать одну из копий документа, которую хотите оставить.

Файл заблокирован

Ошибка со стороны эксель.png

Данная ошибка возникает при одновременной работе двух пользователей с одной Excel-таблицей, находящейся в синхронизированной папке.

Если какой-то другой сотрудник отредактировал данную таблицу, сохранил ее и синхронизировал с диском, пока вы с ней еще работаете, то у вас появится данное сообщение.

Решить данную проблему можно только организационным способом. Рекомендую сделать бекапы измененного файла в стороннем документе, не находящемся в синхронизированной папке диска. Далее оригинальный документ нужно закрыть. После этого вам с коллегами нужно принять централизованное решение, какие изменения в файл нужно внести.

Почему восстанавливается удаленный/переименованный файл?

Восстановление удаленных файлов на портале может быть связано с тем, что в момент его удаления или переименования, не все пользователи находились онлайн. Позже, когда эти пользователи включают компьютер, происходит восстановление файла с их ПК.

Также это может произойти в случае, если была запущена полная синхронизация со стороны десктопного приложения.

Если все пользователи постоянно синхронизируют Диск, такой проблемы не возникнет. Поэтому для того, чтобы удалить файл, всем пользователям нужно синхронизировать диск и удалить папку из Битрикс24.

Также проверьте, чтобы у всех сотрудников была установлена последняя версия десктопного приложения.

Спасибо, помогло!

Спасибо

Необязательно:

Оставить отзыв о статье

Уточните, пожалуйста, почему:

Это не то, что я ищу

Очень сложно и непонятно

Оставить отзыв о статье

Всем добрый день, соучастники.
Возникла проблема, есть проект на битриксе, есть каталог товаров и небольшое кол-во вспомогательных справочников.

При попытке редактирования «элемента меню/записи справочника» при нажатии кнопки сохранить (после внесения изменений) происходит переадресация на механизм добавления без сохранения изменений.

Пример редиректа: https://domen.ru/bitrix/admin/iblock_element_edit.php?IBLOCK_ID=4&type=catalog&lang=ru&find_section_section=17

Так же наблюдаю следующую картину при редактировании типа инфоблока:
/bitrix/admin/iblock_edit.php?type=catalog&lang=ru&admin=Y

[TypeError] 
Argument 1 passed to BitrixIblockTemplateHelper::convertArrayToModifiers() must be of the type array, null given, called in /home/bitrix/www/bitrix/modules/iblock/admin/iblock_edit.php on line 686 (0)
/home/bitrix/www/bitrix/modules/iblock/lib/template/helper.php:57
#0: BitrixIblockTemplateHelper::convertArrayToModifiers(NULL)
    /home/bitrix/www/bitrix/modules/iblock/admin/iblock_edit.php:686
#1: require(string)
    /home/bitrix/www/bitrix/admin/iblock_edit.php:1

Через список товары копируются и удаляются. Но именно создание и редактирование не работает.

Что пробовал:

  1. Проверил настройки подключения к БД (идентичные) — менял на root — проблема сохранялась.
  2. Поигрался с настройками PHP с уклоном с сторону обработки ошибок.
  3. Попытался полазить в ядре — результат 0.
  4. Средствами битры проверил состояние БД — все ок.
  5. Сделал восстановление — все ок.
  6. Накатил бекап — проблема видимо уже давно, просто не видели — поэтому проблема сохранилась.
  7. Отключил вспомогательные редиректы в .htaccess — проблема на месте.
  8. Уже от безысходности: вкл/выкл — кеширование.

Нужна подсказка.

Битра: 2016 год.
PHP:
PHP Version 7.1.33

Apache API Version: 20120211

 

при сохранении все поля очищаются и становятся пустыми.

На кого регистрировать лицензии
Название компании: iosourcing.ru
Имя и фамилия: Иван Трухин
E-mail: artcookery@yandex.ru

Изменено: Ioannes19.08.2015 13:51:31

 

Проблема возникала из-за использования точек в идентификаторах полей.

 

Добрый день, Сергей
Возникла такая же проблема с модулем, никаких точек в идентификаторах не использую. После сохранения все русские символы из формы редактирования модуля пропадают, однако, на сайте они выводятся (стало быть в базе сохраняются). Т.о. модуль работает, но в админке инфа по русски не отображается. С ходу пришла мысль что проблема с кодировками гдето внутри.. Однако проверять ее не стал, сорри — потратишь кучу времени. Кодировка сайта 1251.

На другом сайте данный модуль работает (отображается в админке) корректно.

 

Доп инфо к пред сообщению
1С-Битрикс: Управление сайтом 16.0.11
Редакция старт

 

Гость, не могу смоделировать вашу проблему, к сожалению у меня кодировка виндовс большая редкость, но последний раз проверял кажется с 15 версией в кодировке виндовс, проблем не было. Сходу: а у вас проверка сайта ошибок не выдает, func_overload настроен правильно?

 

проверка сайта ошибок не выдает,
php_value mbstring.func_overload 2

Еще раз хочу отметить — модуль работает, в публичной части что надо вываливает. Но в админке в форме русские символы не выводит (потому и подумал сначала на кодировку).

В 15 версии у меня с модулем всё ок.

В ближайшее время планировал собирать еще один сайт на версии 16 но уже в кодировке utf8, планировал использовать Ваш модуль — по результатам отпишусь

Спасибо за обратную связь

 

Сергей Эстрин

Администратор

Сообщений: 462
Регистрация: 18.02.2010

#7

05.08.2016 13:26:21

Цитата
Максус написал:
php_value mbstring.func_overload 2

А почему 2? Для кодировки виндовс ведь должно быть 0 вроде..

Цитировать   Имя

 

Добрый день Сергей
На самом деле я протупил, сорри, в штакесе у меня прописано
<IfModule mod_php5.c>
 php_flag allow_call_time_pass_reference 1
 php_flag session.use_trans_sid off

 php_value display_errors 1
 php_value default_socket_timeout 60
 php_value max_input_vars 10000
 php_value mbstring.internal_encoding cp1251

 #php_value mbstring.func_overload 2
 #php_value mbstring.internal_encoding UTF-8
</IfModule>
так что по поводу php_value mbstring.func_overload 2 это я тормознул, сорри.

Однако, пытался раскоментировать и поставил 0 — не помогло. В ближайшие дни планирую делать сайт на 16 версии в кодировке утф8, Ваш модуль буду использовать — обязательно отпишусь здесь как он встанет.

PS кстати Вам за мобуль спасибо, ранее для аналогичных целей прописывал константы в init.php что имхо не совсем айс

 

установил модуль на

1С-Битрикс: Управление сайтом 16.0.11
Редакция small business
кодировка utf8

всё работает нормально, таки проблема вылазит при кодировке 1251 ?

 

Сергей Эстрин

Администратор

Сообщений: 462
Регистрация: 18.02.2010

#10

15.08.2016 13:18:42

Цитата
Гость написал:
таки проблема вылазит при кодировке 1251 ?

Видимо да, если у меня будет под рукой сайт в виндовс кодировке, проверю.

Цитировать   Имя

 

Гость

Гость

#11

24.08.2016 19:15:54

Добрый день Сергей. Перенёс сайт на другой хостинг — все стало ок, однако, видимо таки проблема есть — где то внутри в битриксе с кодировками (или в настройках сервера), тк. заметил что на новом хостинге в панели администратора кое где (не в вашем модуле) проскакивают крокозябры вместо текста (на старом хостинге было ок)  — похоже из бд тянет не в той кодировке.

Цитировать   Имя

ГлавнаяФорумОшибка с сохранением описания шаблона если его создавать из Битрикс24 в бесплатной интеграции Юнисендер

Важно! На нашем форуме собраны тысячи вопросов и ответов (с 2015 года). Но часть из них может оказаться не актуальными с позиции сегодняшнего дня. Если у вас нет времени искать нужный ответ и проверять его актуальность, то просто оставьте ваши координаты, мы с вами свяжемся и поможем в решении вопроса.


[ Закрыто ] Ошибка с сохранением описания шаблона если его создавать из Битрикс24 в бесплатной интеграции Юнисендер, описание шаблона слетает при создании шаблона на стороне Битрикс24

 

Тихомирова

Пользователь

Сообщений: 32
Баллов: 32
Регистрация: 31.08.2016

Создаем шаблоны рассылок, делаем описание, через какое то время оно пропадает.

 

Окара

Администратор

Сообщений: 7349
Баллов: 9349
Регистрация: 22.06.2015

Учредитель Пинол

Тихомирова, здравствуйте.

Эта ошибка зафиксирована и поставлена в план работ. Рекомендация, создавайте шаблоны в ЛК Юнисендер, если Вам критично на данный момент эта ошибка.

http://prntscr.com/d1a3ao

 

Тихомирова

Пользователь

Сообщений: 32
Баллов: 32
Регистрация: 31.08.2016

Данная ошибку еще не устранена?

 

Алексей Окара

Администратор

Сообщений: 7349
Баллов: 9349
Регистрация: 22.06.2015

Учредитель Пинол

Тихомирова, здравствуйте.

Прошу уточнрить, какое поле пропадает и дать скрин на данный конкретный шаблон, который Вы создаете в Б24, у которого что то пропало.

Плюс уточнить на почту

order@pinall.ru

доступы в облако .

 

Тихомирова

Пользователь

Сообщений: 32
Баллов: 32
Регистрация: 31.08.2016

Ошибка в том, что пропадает описание шаблона, скрин выложен выше.

 

Алексей Окара

Администратор

Сообщений: 7349
Баллов: 9349
Регистрация: 22.06.2015

Учредитель Пинол

#6

0

14.11.2016 18:56:37

Цитата
Тихомирова написал:
скрин выложен выше.

Тихомирова, ок, прошу доступы, посмотрим что с ним не так.

Пинкит-сервис обмена данными:
https://pinkit.io/#block2011
Получите бесплатную консультацию онлайн:
https://pinall.ru/lp/pinall-10-let-na-rynke-avtomatizatsiya-biznesa/#block3750
Наш YouTube канал:
https://www.youtube.com/pinall

Получить бесплатную консультацию
 

 

Алексей Окара

Администратор

Сообщений: 7349
Баллов: 9349
Регистрация: 22.06.2015

Учредитель Пинол

Тихомирова, здравствуйте.

Простите, но я удалил Ваш пост. Вы же понимаете, что Вы в онлайн режиме выложили доступы с админскими правами?

У нас есть почта-

order@pinall.ru

Прошу на нее и выложить доступы.  

 

Тихомирова

Пользователь

Сообщений: 32
Баллов: 32
Регистрация: 31.08.2016

Удалось ли Вам посмотреть в чем причина того, что описание шаблонов не сохраняется?

 

Алексей Окара

Администратор

Сообщений: 7349
Баллов: 9349
Регистрация: 22.06.2015

Учредитель Пинол

Тихомирова, здравствуйте.

Выявили проблему с API Юнисендер по данному кейсу, передали им в изучение.  

 

Тихомирова

Пользователь

Сообщений: 32
Баллов: 32
Регистрация: 31.08.2016

#10

1

25.11.2016 10:28:02

Какая то информация по данной проблеме уже есть?

Получить бесплатную консультацию
 

Поможем с поиском решения

  • Ошибка сохранения неверное подтверждение пароля
  • Ошибка сохранения не удалось сохранить файл рокет лига
  • Ошибка сохранения настроек grub
  • Ошибка сохранения награды попробуйте снова twitch
  • Ошибка сохранения локальных настроек шарарам