Битрикс. 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