- Вернуться на сайт
- Вернуться на сайт
- Почему могут не приходить письма с формы обратной связи
- Материалы по теме:
- А теперь приступим.
- Готово!
- Общий порядок действий
- База данных
- Файлы
- Использование внешних программ или конвертация файлов вручную
- Советы и ссылки
- Список ссылок по теме:
- Обмен данными осуществляется с помощью внешней обработки «Обмен данными с сайтом ЖКХ».
- Виды обработки
- Подготовка к работе
- Работа с сайтом
- Недоступны файлы для чтения и записи
- Как уменьшить размер БД
- Как очистить статистику Веб-аналитики
- Как удалить записи из Журнала событий
- Смена кодировки Битрикс на UTF8
- Проблемы с отправкой уведомления о заполнении веб-форм
- Настройка формы обратной связи в 1С
- Ошибка БД после переноса на другой хостинг
- Переменная sql_mode в MySQL должна быть пустая
- Не отправляется почта
- Если перестала отправляться почта на Яндекс
- Логирование почты
- Если выкидывает из админки Битрикс
- После ввода логина и пароля снова открывается страница авторизации
- Периодически выкидывает из админки
- Ошибка! Строковые функции strtoupper и strtolower работают некорректно
- Материалы по теме:
- Настройка почтового шаблона для формы обратной связи
Вернуться на сайт
Вернуться на сайт
Параметры настройки UTF (mbstring и константа BX_UTF): Ошибка! Строковые функции strtoupper и strtolower работают некорректно
В заметке собраны некоторые проблемы с Bitrix Framework и VMBitrix, а так же приведены способы их решения.
Важно: описанные ниже действия потенциально опасные и могут привести к неработоспособности вашего сайта, выполняйте их осознанно на свой страх и риск.
Прежде чем затронуть функциональность сайта не забудьте сделать бэкап.
Почему могут не приходить письма с формы обратной связи
Если письма с формы обратной связи не доходят до указанного адреса, нужно проверить (данные рекомендации относятся и к форме «Вопрос-Ответ»):
Работает ли отправка писем на сайте. Для этого надо запустить проверку системы в меню «Настройки – Инструменты – Проверка системы». Нужно проверить, нет ли ошибок для функции «Отправка почты». Если ошибки есть, надо их исправить.
Работают ли рассылки на сайте, инструкция по настройке рассылок
.
Если по пунктам 1 и 2 все корректно, скорее всего письма блокируются внешними почтовыми сервисами.

Материалы по теме:
Добрый день!
Нужна помощь, при редактировании параметров некоторых компонентов (например, bitrix:catalog) получаю ошибку «Не удалось обнаружить код вызова компонента».
Как мне удалось выяснить, это из-за неправильного номера строки в вызове диалога, в моем случае src_line=430, а по факту должна быть 12 строка.
Так же при проверке системы есть 1 ошибка (я думаю она связана с моей проблемой) :
Долго гуглил и пробовал все варианты:
Добавил mb_internal_encoding(‘utf-8’); в /local/php_interface/init.php
В /bitrix/php_interface/dbconn.php есть строка define(‘BX_UTF’, true);
LANG_CHARSET и SITE_CHARSET = UTF-8
В php.ini прописано:
mbstring.internal_encoding=UTF-8
mbstring.func_overload=2
default_charset=utf-8
Даже в .htaccess добавил на всякий случай:
<IfModule mod_php7.c>
php_flag session.use_trans_sid on
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8
php_value default_charset UTF-8
</IfModule>
Пробовал так же удалять mbstring.internal_encoding и оставлять только default_charset UTF-8 как советуют тут
https://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.internal-encoding
, но результат не изменился.
Хостинг: reg.ru
Версия PHP: пробовал 7.0-bx\7.1-bx\7.2-bx
Довольно часто встречаемся с ситуацией, когда сайт использует кодировку cp1251, хотя «1C-Битрикс» уже с десяток лет поддерживает кодировку UTF-8. В основном это довольно старые проекты, которые работают и эволюционируют до сих пор, но перейти на UTF-8 не могли из-за кажущихся технических сложностей.
Сегодня расскажу о технической части вопроса, применив которую, вы сможете сконвертировать сайт на Битрикс в кодировку UTF-8.
Но прежде хочу выразить благодарность Волкову Сергею и Шаромову Денису, материалы которых помогли в подготовке этой статьи.
Внимание! Редактировать файлы сайта необходимо через ftp или ssh.
А теперь приступим.
1. Сделайте резервную копию и обязательно включите в нее базу данных и все файлы сайта.
2. Если вы используете витруальный хостинг, попросите техподдержку установить следующие параметры:
mbstring.func_overload 2
mbstring.internal_encoding UTF-8 Если вы используете виртуальную машину Битрикс, можно установить их самостоятельно.
3. Удалите модули «Поиск» без сохранения таблиц и «Веб-аналитика» (без сохранения таблиц, но с сохранением шаблонов сообщений).
4. Удалить из словаря транслита в модуле «Форум» ( Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита
) букву ‘ё’, которая имеет ID = 7.

5. Изменить в региональных настройках кодировку с windows-1251 на utf-8.
В настройках сайта обязательно должна быть выбрана соответствующая региональная настройка.
6. Добавить в /bitrix/php_interface/dbconn.php:
7. Загрузить в корневую директорию сайта скрипт
convert_utf8.php
, запустить его и дождаться полного его выполнения.
Первым шагом проверяются права на изменение файлов, вторым проходит конвертация всех файлов сайта и последним — изменение кодировки базы данных.
Если у вас очень большая база данных, ее конвертация может занять очень долгое время или же вообще не окончиться успешно. В таком случае меняем кодировку базы вручную следующим образом. В панели администратора на странице «SQL-запрос» выполняем следующий запрос:
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;') as
FROM `information_schema`.`TABLES` t
AND t.`TABLE_SCHEMA` = 'database_name' ORDER BY 1
Где database_name — имя вашей база данных.
Этот запрос выведет на страницу новый запрос, который нужно будет выполнить на этой же странице:

Копируйте все строки нового запроса (не забудьте отключить ограничение на вывод количества записей на странице) и выполните полученный новый запрос. По завершении выполнения все таблицы базы будут переведены в кодировку UTF-8.
8. Пропишите в /bitrix/php_interface/after_connect.php:
$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"'); 9. Пропишите в /bitrix/php_interface/after_connect_d7.php:
$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"'); 10. Пропишите в /bitrix/.settings.php:
return array ( 'utf_mode' => array ( 'value' => true, 'readonly' => true, ),
11. Очистите весь кеш сайта и выйдите из своего профиля, после чего снова зайдите в него.
12. Удалите скрипт convert_utf8.php.
13. Установите модуль «Поиск» и сделайте переиндексацию.
14. Установить модуль «Веб-аналитика», если вы его использовали ранее.
Готово!
После конвертации сайта могут возникнуть проблемы с сериализованными массивами (в основном это свойства Html-текст и настройки отображения для пользователей в админке). В таком случае вам поможет
вот этот скрипт
.
Данная ошибка может возникнуть при не корректной настройки сервера под Битрикс, а именно значения директив mbstring.func_overload
и mbstring.internal_encoding
должны быть установлены 2
и UTF-8
соответственно. Если у Вас есть доступ к php.ini эта настройка делается в данном файле. Например на хостинге beget, есть возможность изменить их настройки в панеле управления, непосредственно в настройках сайта. Если же нет возможности изменить значения на сервере, можно добавить директивы в файл .htaccess
На практике это выглядит так (две последние строчки):
<IfModule mod_php7.c>
php_flag allow_call_time_pass_reference 1
php_flag session.use_trans_sid off
php_value display_errors off
#php_value display_errors 1
php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2
</IfModule>
Подобных статей по настройке сервера под битрикс предостаточно и я скорее-всего не стал бы делать еще одну заметку на эту тему, если бы эти настройки сработали.
В моём случае настройки на сервере уже были какие требуются, но проблема оставалась, на некоторых ресурсах рекомендация была такая. Нужно чтобы код php и закрывающие теги были отделены от html тегов, а так же код компонентов был отделён от Вашего php кода, например условий. P S^ У меня было множество проектов где наблюдалось нарушение этого условия, но темнемение, компонент вызывался нормально, во всяком случае попробуйте выполнить это условие.
Выполните тест системы в панели управления Битрикса Рабочий стол>Настройки>Инструменты>Проверка системы :
Здесь нас интересует пункт (Параметры настройки UTF (mbstring и константа BX_UTF)), функция должна работать нормально, а работать она будет нормально при правильных настройках из первой рекомендации. При этом константа BX_UTF в файле .settings.php и dbconn.php была установлена true. Ошибка гласила что данная функция работает неправильно. Я попробовал установить значение данной константы false.


Далее нужно выполнить проверку еще раз и появится следующая ошибка

После проверки константе нужно вновь вернуть значение true в первом и втором файле. После этих манипуляций ошибка как ни странно пропала.
Еще есть вариант такой, можно попробовать сменить версию php, проблема именно в этом, если у Вас 7.3 попробуйте сменить на 7.2 или 7.4 т.к. именно в php версии 7.3 у пользователей наблюдалась проблема такого характера.
Данная ошибка может возникнуть при некорректной настройке сервера под Битрикс. Одной из причин может быть неправильное значение директив mbstring.func_overload
и mbstring.internal_encoding
. Для корректной работы эти значения должны быть установлены на 2
и UTF-8
соответственно. Если у вас есть доступ к файлу php.ini, вы можете изменить эти настройки в нем. Например, на хостинге Beget можно изменить значения в панели управления, в настройках конкретного сайта. Если у вас нет возможности изменить значения на сервере, вы можете добавить соответствующие директивы в файл .htaccess
.
<IfModule mod_php7.c> php_flag allow_call_time_pass_reference 1 php_flag session.use_trans_sid off php_value display_errors off #php_value display_errors 1 php_value mbstring.internal_encoding UTF-8 php_value mbstring.func_overload 2 </IfModule>
В некоторых случаях, даже если настройки сервера уже корректные, проблема может остаться. Одна из рекомендаций заключается в том, чтобы отделить код PHP и закрывающие теги от HTML тегов. Также рекомендуется отделить код компонентов от вашего PHP кода, например, условий. Некоторые проекты могут работать нормально, даже если это условие нарушено, но для устранения данной ошибки рекомендуется выполнить это условие.
Выполните тест системы в панели управления Битрикса: Рабочий стол > Настройки > Инструменты > Проверка системы. Особое внимание следует обратить на пункт «Параметры настройки UTF (mbstring и константа BX_UTF)». Функция должна работать нормально при правильных настройках, описанных в первой рекомендации. Убедитесь также, что константа BX_UTF в файлах .settings.php и dbconn.php установлена в значение true. Если ошибка указывает на неправильную работу данной функции, попробуйте установить значение константы в false.
define("BX_UTF", false); define("BX_UTF", false); После изменения значений константы, выполните проверку системы еще раз. Возникнет следующая ошибка:

После этого верните значение константы в true в обоих файлах. После этих манипуляций ошибка должна исчезнуть.
Еще одним вариантом решения проблемы может быть смена версии PHP. Некоторые пользователи сталкивались с данной проблемой именно в версии PHP 7.3. Попробуйте изменить версию на 7.2 или 7.4, чтобы устранить данную ошибку.
4 уровень
— сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
Недоступно в лицензиях:
Рассмотрим общий порядок конвертации сайта с кодировки cp1251 в UTF-8.
Внимание!
Прежде чем приступить к конвертации сайта обязательно сделайте резервную копию сайта и базы данных
.
Настоятельно рекомендуем
предварительно потренироваться выполнять конвертацию на отдельной копии сайта. Конвертация сайта сложная операция и каждый случай индивидуален. При её выполнении высока вероятность потерять важные данные, если что-то пойдет не так!
Общий порядок действий
Редактировать файлы и вносить правки на сервере можно подключаясь по SSH
.
Общий порядок действий:
- <!— В настройках сайта Настройки > Настройки продукта > Сайты > Список сайтов > [название_сайта] указаны региональные настройки (например, ru). —> В региональных настройках Настройки > Настройки продукта > Языковые параметры > Региональные настройки
сменитe кодировку на UTF-8
для всех языков; - Установите в файле настроек php.ini
значениеdefault_charset = "utf-8"
;Расположение файла настроек php.ini можно посмотреть заранее в административном разделе на странице
Страница Настройки PHP
( Настройки > Инструменты > Диагностика > Настройки PHP
) служит для отображения информации о текущих настройках PHP.
Подробнее в курсе Администратор. Базовый
(Loaded Configuration File) или с помощью PHP функции phpinfo()
.Если сайт размещен на Хостинге, возможно понадобится обратиться к хостинг провайдеру для внесения этих настроек.
- Добавьте в
/bitrix/php_interface/dbconn.phpdefine("BX_UTF", true);В этом же файле удалите строки, относящиеся к кодировке cp1251:
setlocale(LC_ALL, 'ru_RU. CP1251'); setlocale(LC_NUMERIC, 'C'); mb_internal_encoding("Windows-1251"); - Установите значение ‘value’ => true
для utf_mode в файле/bitrix/.settings.php
:utf_mode => array( 'value' => true, 'readonly' => true, ),
- Перекодируйте всю базу данных в 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$this->queryExecute("SET NAMES 'utf8'"); $this->queryExecute('SET collation_connection = "utf8_unicode_ci"'); //До версии main 22.0 вместо $this использовалась переменная $connection. - Установите в
/.htaccess
:php_value default_charset utf-8
- Перекодируйте все файлы сайта в UTF-8.
- Сбросьте весь кеш;
- Выйдите и зайдите заново на сайт чтобы обновить данные сессии.
База данных
Для конвертации базы (БД) потребуется сменить кодировку самой базы, всех её таблиц и всех текстовых полей таблиц. НЕ
выполняйте конвертацию БД из административной части. Используйте для этого другие доступные средства.
В простом случае (без сериализованных данных) перекодировать базу данных и все таблицы можно следующим образом:
- Изменить кодировку самой базы данных сайта:
ALTER DATABASE имя_базы_данных charset=utf8;
- Изменить кодировку соединения с базой данных:
SET NAMES 'utf8'
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_unicode_ci;
- Выполним запрос, который позволит найти все таблицы базы данных и сформировать запрос на смену кодировки для каждой:
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` = 'имя_базы_данных' ORDER BY 1 ; - В качестве ответа получим список запросов вида:
ALTER TABLE `имя_базы_данных`.`имя_таблицы` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
- Выполните все запросы. База данных и таблицы перекодированы.
Внимание:
Если в базе данных хранятся сериализованные данные, то приведенный выше метод конвертации для них не подойдет. Используйте специальные методы / средства для конвертации таких данных.
Файлы
В простом варианте, когда все файлы сайта в кодировке cp1251, перекодировать их в UTF-8 можно выполнив такую команду в корневой папке сайта
(для UNIX систем):
// переходим в корневую папку сайта. Например:
cd /var/www/html/
// выполняем команду для перекодирования файлов
find . -name '*.php' -type f -exec iconv -fcp1251 -tutf8 -o /tmp/tmp_file {} \; -exec mv /tmp/tmp_file {} \; Важно:
Способ не подходит для сайтов на нескольких языках, т.к. в таком случае в структуре будут присутствовать файлы в различных кодировках.
Использование внешних программ или конвертация файлов вручную
Часто при использовании внешних программ для конвертации в файлы добавляется специальная последовательность символов, так называемый BOM
. Эти символы должны находиться только вначале файла, а поскольку итоговая страница является составной из нескольких php файлов, то спецсимволы появляются в теле страницы. Если делаете конвертацию файлов вручную — не сохраняйте с BOM!
Советы и ссылки
Основные шаги по конвертации сайта выполнены. Если после конвертации возникают ошибки при открытии сайта, включите режим отладки 'debug' => true
в файле /bitrix/.settings.php
. Это позволит видеть где и какие возникают ошибки.
Обязательно выполните
Форма Проверка системы
( Настройки > Инструменты > Проверка системы
) предназначена для всесторонней проверки соответствия параметров системы, на которой осуществляется функционирование проекта, минимальным и рекомендуемым техническим требованиям продукта.
Подробнее в курсе Администратор. Базовый
.
Если возникли ошибки с таблицами базы данных (последняя строка проверки), можно посмотреть
логи в журнале

. В конце файла логов указаны будут указаны запросы, с помощью которых можно исправить эти ошибки. Перед началом исправления рекомендуется сделать копию базы данных.
Список ссылок по теме:
Между 1С: Сайт ЖКХ
и программами 1С возможен обмен данными.
Для наших программ сферы ЖКХ
возможности обмена с Сайтом уже включены в поставку:
Инструкция по обмену с 1С: Учет в управляющих компаниях ЖКХ, ТСЖ и ЖСК
Кроме этого можно настроить обмен с со следующими программами 1С:
БИТ: Жилищно-коммунальное хозяйство 1.2 (2.0.64.37/1.2.9.37)
БИТ: Жилищно-коммунальное хозяйство 1.3 версия 1.3.1.92
Инфокрафт: ЖКХ Учет управляющей компании, на платформе 1С:8.2, релиз 1.0.27.08
Инфокрафт: Формула ЖКХ + Бухгалтерия, редакция 1.0
Инфокрафт, редакция 2.0
Версия (3.0.82.34) (1.0.32.01)
Кварта-С: Расчет квартплаты, редакция 2.0, версия 3.0.104.4
1С: Расчет квартплаты и бухгалтерия ЖКХ, редакция 3.0 (3.0.70.61)
Также возможно разработать обмен данными с любой другой программой на платформе 1С или на других платформах с возможностью адаптации.
Обмен данными осуществляется с помощью внешней обработки «Обмен данными с сайтом ЖКХ».
Данная обработка позволяет выгружать из программы на сайт
сведения:
- о лицевых счетах (включая сведения об ответственном собственнике, адресе проживания, общей и жилой площадях помещения, информацию о количестве жильцов и льготников и др.);
- о задолженностях, начислениях, оплатах и корректировках;
- об индивидуальных и общедомовых приборах учета;
- о показаниях индивидуальных и общедомовых приборов учета;
- о поставщиках (адрес, предоставляемые услуги, банковские реквизиты);
- о домах (площади, адрес, банковские реквизиты обслуживающей здание организации) и др.
С помощью обработки можно загрузить с сайта
следующие данные:
- показания индивидуальных приборов учета;
- реестр платежей (сведения об оплатах, произведенных через сайт).
Виды обработки
Существует несколько видов обработки «Обмен данными с сайтом ЖКХ»:
- С использованием регламентного задания (обмен данными будет осуществляться автоматически по заданному расписанию).
В данном случае необходимо вносить изменения в конфигурацию. При этом выполнить настройку обмена можно будет один раз независимо от количества пользователей, которые будут использовать данный механизм.
- Без использования регламентного задания.
В данном случае возможны варианты:
a) доработки в конфигурацию не вносятся, но настройку обмена нужно будет выполнять для каждого пользователя, который будет пользоваться данным механизмом;
b) в конфигурацию вносятся доработки, тогда настройку обмена можно будет выполнить однократно.
Важно: для базовой версии программы обмен возможен только без использования регламентного задания, так как внесение изменений в конфигурацию для данной поставки невозможно.
Подготовка к работе
Перед началом работы необходимо указать настройки подключения к сайту управляющей организации на странице «Настройки». Данная страница имеет следующий вид:

- В поле «Адрес сайта» должен указываться адрес сайта без «http://».
- Флаг «Использовать безопасное соединение (SSL)» указывает, необходимо ли использовать защищенное соединение при подключении к сайту.
- Флаг «Не выгружать персональные данные на сайт» указывает, нужно ли выгружать на сайт персональные данные владельцев лицевых счетов, такие как ФИО собственника, адрес собственника и т.д.
Можно настроить обмен сразу по нескольким организациям, но сайт можно выбрать только один.
Если необходимо выполнять обмен на несколько сайтов, то необходимо будет каждый раз менять настройки.
Работа с сайтом
Для работы с сайтом управляющей организации предназначены следующие страницы:
Страница «Управление параметрами доступа»:

Данная страница предназначена для подготовки лицевых счетов к обмену данными с сайтом.
Подготовка осуществляется путем последовательного (слева-направо) нажатия кнопок в командной панели таблицы формы. При этом:
- Флаг «Обновлять параметры доступа» указывает, необходимо ли перезаписывать имеющиеся на сайте параметры доступа в личные кабинеты лицевых счетов на сайте.
- Меню «Заполнить» предназначено для заполнения таблицы лицевыми счетами.
- По нажатию на кнопку «Сгенерировать» осуществляется генерация логинов и паролей лицевых счетов.
- По нажатию на кнопку «Записать логины» осуществляется сохранение логинов лицевых счетов, указанных в таблице, в базе.
- По нажатию на кнопку «Передать на сайт» осуществляется передача параметров доступа к личным кабинетам лицевых счетов на сайт.
- По нажатию на кнопку «Сохранить параметры доступа в файл» осуществляется сохранение параметров доступа из таблицы в общий файл формата csv.
Страница «Разовая выгрузка данных»:

Данная страница предназначена для разовой выгрузки данных на сайт. При этом:
- В поле «Месяц выгрузки» необходимо указать период, за который необходимо выполнить выгрузку.
- Если установлен флаг «Выгружать данные только по указанным лицевым счетам», то выгрузка будет осуществляться только по лицевым счетам, указанным в соответствующей таблице.
Через «Разовую выгрузку данных» можно только выгрузить данные на сайт.
Есть возможность произвести обмен с отбором по периоду и лицевым счетам.
Загрузка с сайта в программу при разовой выгрузке не происходит.
Страница «Обмены данными»:
Данная страница предназначена для выполнения и мониторинга обмена данными.
Мониторинг реализуется посредством журнала обмена, в котором выводятся сведения обо всех совершенных обменах.
По нажатию на кнопку «Выполнить обмен данными» осуществляется обмен данными с сайтом в соответствии со следующими флагами:
- «Выгрузка из программы на сайт данных по ЛС» — будут выгружаться основные сведения по лицевым счетам (сведения о собственнике, адрес проживания и др.), сведения о начислениях за текущий месяц, с детализацией по услугам, сведения об индивидуальных и общедомовых приборах учета;
- «Загрузка с сайта в программу показаний ПУ» — загружаться с сайта последние учтенные показания индивидуальных приборов учета.
- «Загрузка с сайта в программу реестра платежей» — будет осуществляться загрузка с сайта сведений об оплатах, произведенных через сайт.
Также на данной странице можно настроить запуск механизма обмена данными в автоматическом режиме с помощью регламентного задания.
Для этого на данной странице расположены флаг «Использовать регламентное задание» и гиперссылка, по нажатию на которую можно настроить расписание регламентного задания.
При этом, выполняемый в автоматическом режиме обмен будет выполняться в соответствии с последними указанными на данной странице настройками обмена.
По нажатию на кнопку «Настройка» открывается форма настроек, содержащая следующие закладки:

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

На данной закладке можно указать, по каким именно видам услуг необходимо выполнять обмен данными. Способ выбора услуг может принимать следующие значения:
- Все виды услуг.
- Выбранные виды услуг.
- Все, кроме выбранных видов услуг.
Для вариантов 2 и 3 становится доступна табличная часть, в которой можно указать виды услуг, удовлетворяющих выбранному способу выбора услуг.
Мы также можем настроить интеграцию и с другими программами 1С.
Наименование Вашей организации
Наименование программного продукта, для которого нужна доработка, и его релиз
Недоступны файлы для чтения и записи
Если при проверке доступа к файлам 1С-Битрикс (Настройки
– Инструменты
– Проверка сайта
– Проверка доступа) появляется ошибка: Недоступны для чтения или записи (показаны первые 10)
, это значит на сервере неверно настроены права для сайта.

Причины могут быть разные, чаще это происходит если какие то файлы создавались, распаковывались или перемещались пользователем, к файлам которого 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 {} \; Затем выполните проверку повторно, ошибка должна исчезнуть.
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.
Как уменьшить размер БД
Если база данных 1С-Битрикс разрослась и это не связно с количеством информации или товаров на сайте, то возможно базу раздувают записи Журнала событий, статистика модуля Веб-аналитика или другие таблицы.
Разросшуюся базу данных можно подчистить. Однако если 1С-Битрикс продолжает необоснованно расти, возможно проблема глубже и выходит за рамки данной статьи.
Как очистить статистику Веб-аналитики
В админке перейдите в Настройки
> Настройки продукта
> Настройки модулей
> Веб-аналитика
. В разделе Очистка статистики
укажите до какой даты выполнить очистку (если оставить незаполненным, то будет очищена вся статистика) и нажмите кнопку Очистить
.
Как удалить записи из Журнала событий
В настройках главного модуля, на вкладке Журнал событий
, уменьшите количество дней для хранения событий. Чем меньше дней хранятся записи, тем меньше весит таблица. Дополнительно можно исключить типы событий, которые не нужно записывать в таблицу. База уменьшится не сразу, Битрикс потребуется некоторое время на удаление старых событий.
Более быстрый и радикальный вариант – очистить таблицу b_event_log
через SQL-запрос. При этом будут удалены все события!
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Рассмотрим пример настройки почтового шаблонаИз формы обратной связи test-jkh.vdgb-soft.ru <Почтовый ящик автора сообщения>
Для этого в шаблоне в поле Тема необходимо указать:
Из формы обратной связи test-jkh.vdgb-soft.ru: #AUTHOR_EMAIL#Для удобства ответа обратный адрес должен быть адресом отправителя сообщения.
Для этого в шаблоне в поле Обратный адрес необходимо указать: #AUTHOR_EMAIL#
-
Информационное сообщение сайта #SITE_NAME# -
Смена кодировки Битрикс на 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);Если база данных большая, конвертация может занять долгое время или вообще закончится неудачей. В таком случае попробуйте конвертировать базу данных вручную. Для этого в админке сайта на странице 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"');$connection->queryExecute("SET NAMES 'utf8'"); $connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');return array ( 'utf_mode' => array ( 'value' => true, 'readonly' => true, ),Затем полностью очистите кэш сайта.
Удалите более ненужный скрипт convert_utf8.php.
Заново установите модуль Поиск
и сделайте переиндексацию.Установите модуль Веб-аналитика
(если использовали ранее).Если возникли проблемы с сериализованными массивами возможно сможет помочь скрипт
.
Дополнительные сведения на dev.1c-bitrix.ru
и тема на форуме
.
Проблемы с отправкой уведомления о заполнении веб-форм
Для начала проверьте, настройки почтового события заполнения формы и его шаблона. Откройте Панель управления
> Настройки
> Настройки продукта
> Почтовые события
> Типы событий
и выберите интересующее событие.На вкладке Тип события
, убедитесь, что отмечены галочки возле используемых на сайте кодов языка.
На вкладке Шаблоны
должен задан хотя бы один шаблон. Перейдите в шаблон кликнув на его идентификаторе или откройте его из списка шаблонов: Панель управления
> Настройки
> Настройки продукта
> Почтовые события
> Почтовые шаблоны
.В настройках выбранного почтового шаблона, должна стоять галочка Активен
, и выбран хотя бы один сайт. Также должны быть корректно заполнены поля От кого
и Кому
(значения по-умолчанию #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
(ноль) – не корректные настройки типов событий или в почтовом шаблоне. Проверьте настройки как указано в начале.
Настройка формы обратной связи в 1С
В 1С: Сайт ЖКХ
реализована возможность общения жильца и администрации УК, ТСЖ, УО и т.п. через «Форму обратной связи», которая значительно облегчает отправку писем, благодаря специальным полям, отведенным для написания текста.
Ошибка БД после переноса на другой хостинг
Одна из типичных ошибок после переноса на другой хостинг, например такая:
2016-05-25 15:33:22 - Host: host:80 - UNCAUGHT_EXCEPTION - [Error] Call to undefined function Bitrix\Main\DB\mysql_connect() (0) /home/bitrix/www/bitrix/modules/main/lib/db/mysqlconnection.php:45 #0: Bitrix\Main\DB\MysqlConnection->connectInternal()...Может быть вызвана сменой СУБД с MySQL на MySQLi или наоборот.
Чтобы исправить нужно перенастроить подключение к БД, отдельно для старого и нового ядра.
В случае с MySQLi
В файле \bitrix\php_interface\dbconn.php
define("BX_USE_MYSQLI", true);В файле \bitrix\.settings.php поменять класс соединения с базой на MysqliConnection.
'connections' => array ( 'value' => array ( 'default' => array ( 'className' => '\\Bitrix\\Main\\DB\\MysqliConnection', 'host' => 'localhost', 'database' => 'database', 'login' => 'login', 'password' => '*****', ), ), ),В случае с MySQL соответственно
В файле \bitrix\php_interface\dbconn.php
В файле \bitrix\.settings.php поменять класс соединения с базой на MysqlConnection.После изменения настроек, сайт должен заработать.
Innodb_strict_mode=ON, требуется OFF
Ошибка может появиться при проверке системы. Для исправления воспользуйтесь одним из двух вариантов.
Вариант 1. Через конфигурационные файлы Битрикс.
В файл /bitrix/php_interface/after_connect.php добавьте сторку: - Y
Вам было отправлено сообщение через форму обратной связи
E-mail автора: #AUTHOR_EMAIL#
Сообщение сгенерировано автоматически.
Для этого в шаблоне в поле
Сообщение необходимо указать текст сообщения.Измененный почтовый шаблон будет иметь вид:
При получении сообщения из формы обратной связи письмо будет выглядеть следующим образом:
- В файл /bitrix/php_interface/after_connect_d7.php
- /etc/my.cnf /etc/alternatives/my.cnf
Вариант 2. Через конфигурационные файлы MySQL.
Откройте конфигурационный файл MySQL (три возможных варианта расположения):
/etc/bitrix-my.cnf
Добавить строку в блоке # InnoDB parameters
Повторно запустите проверку системы, ошибка должна исчезнуть.
Переменная sql_mode в MySQL должна быть пустая
Ошибка может появиться при проверке системы, когда параметр sql_mode задаёт режим работы MySQL, несовместимый с Битрикс.
Для исправления, добавьте указанные ниже строки в конфигурационные файлы.
В файл /bitrix/php_interface/after_connect_d7.php
$connection = Bitrix\Main\Application::getConnection();
$connection->queryExecute("SET sql_mode=''"); В файл /bitrix/php_interface/after_connect.php
$DB->Query("SET sql_mode=''"); Повторно запустите проверку системы, ошибка должна исчезнуть.
Не отправляется почта
Если перестала отправляться почта на Яндекс
После многих лет пользования Яндекс. Почтой для отправки сообщений от интернет-магазина на Битрикс, почта перестала работать. В логах ошибка:
Sender or From header address rejected: not owned by authorized user
Одна из причин по которой это может произойти: адрес почты, под которой авторизируется сервер, отличается от почты (поле «From», «От кого») указанной на сайте.
Но начиная с 2020 года, Яндекс постепенно запрещает отправку писем если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере.
- указать на сайте почту, под которой происходит авторизация на сервере, что в случае использования почты на Яндекс возможно будет не очень солидным;
- поднять свой почтовый сервер и настроить отправку с него;
- арендовать недорогой хостинг, который позволяет отправлять письма даже если поле «From» отличается от адреса пользователя, с данными которого производится авторизация на сервере. Например REG. RU
предоставляет такую возможность, подойдет даже самый простой тариф дешевле 100 руб. в мес.
Свою проблему решил, выбрав третий вариант. Рекомендую хостинги:
Логирование почты
Если проблему с почтой решить не получается, можно сделать логировщик для отлова писем с 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);
}
} Теперь, при отправке письма в лог будут писаться сообщения.
Если выкидывает из админки Битрикс
После ввода логина и пароля снова открывается страница авторизации
Первая причина – изменение прав доступа к файлам и папкам, точнее к папке хранения сессии пользователей. Такая проблема может наблюдается после смены хостинг-провайдера. В этом случае стоит проверить права записи в папку и откорректировать их.
Вторая причина – переполнения дискового пространства сервера. Очистите место на диске, удалите лишние бэкапы или докупите место (если это возможно) у своего хостинг-провайдера.
Периодически выкидывает из админки
$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP']; Однако после окончания работы в админке, лучше вернуть исходные настройки dbconn.php, ради безопастности.
Другой причиной вылетов, может быть наличие лишних символов или пробелов в файлах dbconn.php, after_connect.php, after_connect_d7.php, особенно в начале или в конце файла. Исправьте и проблема должна решиться.
Ошибка! Строковые функции strtoupper и strtolower работают некорректно
В 1С: Сайт ЖКХ
при полной проверке может выйти ошибка «Параметры настройки UTF (mbstring и константа BX_UTF): Ошибка! Строковые функции strtoupper и strtolower работают некорректно»:

В инструкции рассмотрим, как ее исправить (инструкция подходит для сайтов в кодировке windows-1251).
Проверить, что сайт в кодировке windows-1251 (в административном разделе сайта в меню «Настройки – Настройки продукта – Сайты – Список сайтов», выбрать сайт – пункт «Кодировка»):

Сохранить себе копию файла /bitrix/php_interface/dbconn.php (на случай, если сайт упадет, можно будет восстановить этот файл через панель хостинга или фтп доступ):

После сохранения копии файла dbconn.php открыть текущий файл на редактирование и добавить код:

Запустить проверку системы повторно и удостовериться, что ошибка пропала.
ВАЖНО
: если указание данных настроек в файле /bitrix/php_interface/dbconn.php не помогло, значит на сервере не установлена соответствующая локаль:
Необходимо обратиться к администратору сервера (хостеру) для установки локали.
Материалы по теме:

Настройка почтового шаблона для формы обратной связи
Рассмотрим возможности настройки почтовых шаблонов, которые позволяют Администратору сайта настроить шаблон письма, которое будет сформировано при отправке сообщения жильцом через «Форму обратной связи».
Почтовые шаблоны расположены в административном разделе сайта на странице «Настройки – Настройки продукта – Почтовые и СМС события – Почтовые шаблоны». Для редактирования почтового шаблона необходимо выбрать пункт «Изменить» в меню действий:

Форма редактирования почтового шаблона выглядит следующим образом:

Активен
– флажок, который позволяет разрешить или запретить использование этого шаблона.Сайт
– если сайтов несколько, можно указать для каких именно использовать почтовый шаблон.От кого
– указывается электронный адрес, который будет указываться как e-mail отправителя письма.В поле «От кого» система сначала подставляет адрес из настроек сайта, к которому привязан шаблон:

Если в настройках сайта адрес не указан, он берется из настроек Главного модуля (меню «Настройки – Настройки продукта – Настройки модулей – Главный модуль») на закладке «Почта и СМС»:

Кому
– указываются адреса тех, кому будут отправлены письма.Адрес в поле «Кому» указывается в настройках компонента формы обратной связи, по умолчанию данная настройка не заполнена:


Если в настройках компонента не указан адрес, то берется значение из настройки Email администратора сайта Главного модуля. Поскольку адрес по умолчанию в обоих случаях один, то он будет подставлен в оба поля «От кого» и «Кому».
Копия
– указываются адреса тех, кому будут отправлены копии письма.Тема
– указывается тема письма. Удобно использовать для рассылок определённой тематики. Тема должна быть предварительно создана.
Затем указывается текст сообщения. При редактировании сообщения можно выбрать формат представления сообщения: Текст, HTML или Визуальный редактор.
Доступные значения полей для параметров и тела сообщения можно брать ниже:
Где изменить 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.

