WD5 - разработка сайтов

Битрикс. PHP 7.4. Ошибка! Строковая функция strlen работает некорректно.

После обновления версии PHP на сервере с 7.2 до 7.4 появилась ошибка

Параметры настройки UTF (mbstring и константа BX_UTF) (check_mbstring): Fail
Ошибка! Строковая функция strlen работает некорректно.

Настройки сервера были адаптированы под Bitrix, в конфигурационном файле виртуального хоста для apache было указано

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

Проверка через phpinfo() показывала, что всё включено, но битрикс продолжал выводить ошибку, что функция strlen работает некорректно.

В процессе поисков решения нашлась только информация о том, что ошибка известна, связана с объявлением глобальных переменных, но исправлять её не планируется.

Единственным работающим решением на момент написания заметки является принудительная установка значения mbstring.func_overload 2 в php.ini

Для Debian/Ubuntu файл находится в

/etc/php/7.4/apache2/php.ini

Необходимо раскоментировать строку (удалив символ;) и установить значение

mbstring.func_overload = 2

После этого ошибка исчезает.

Предупреждение: если кроме битрикса используете другие cms или фреймворки, из-за глобального параметра могут быть проблемы в их работе, т.к. рекомендуемое значение данного параметра 0 - т.е. не используется. Например проблемы могут возникать с некоторыми версиями phpmyadmin, шаблонизатором twig