Рекомендация 1
Данная ошибка может возникнуть при не корректной настройки сервера под Битрикс, а именно значения директив 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>
Подобных статей по настройке сервера под битрикс предостаточно и я скорее-всего не стал бы делать еще одну заметку на эту тему, если бы эти настройки сработали.
Рекомендация 2
В моём случае настройки на сервере уже были какие требуются, но проблема оставалась, на некоторых ресурсах рекомендация была такая. Нужно чтобы код php и закрывающие теги были отделены от html тегов, а так же код компонентов был отделён от Вашего php кода, например условий. PS^ У меня было множество проектов где наблюдалось нарушение этого условия, но темнемение, компонент вызывался нормально, во всяком случае попробуйте выполнить это условие.
Рекомендация 3
Выполните тест системы в панели управления Битрикса Рабочий стол>Настройки>Инструменты>Проверка системы :
Здесь нас интересует пункт (Параметры настройки UTF (mbstring и константа BX_UTF)), функция должна работать нормально, а работать она будет нормально при правильных настройках из первой рекомендации. При этом константа BX_UTF в файле .settings.php и dbconn.php была установлена true. Ошибка гласила что данная функция работает неправильно. Я попробовал установить значение данной константы false.
Файл .settings.php
Файл dbconn.php
Далее нужно выполнить проверку еще раз и появится следующая ошибка
После проверки константе нужно вновь вернуть значение true в первом и втором файле. После этих манипуляций ошибка как ни странно пропала.
Еще есть вариант такой, можно попробовать сменить версию php, проблема именно в этом, если у Вас 7.3 попробуйте сменить на 7.2 или 7.4 т.к. именно в php версии 7.3 у пользователей наблюдалась проблема такого характера.
Комментарии (53)