Как решить ошибку «Строковая функция strlen работает некорректно»?
После миграции на php74 возникает сабж в журнале проверки системы.
Как результат, перестал работать обмен с 1С.
Советы из контекстного хэлпа в журнале проверки к решению не привели.
Сталкивался с такой проблемой.
Решение в лоб: прописать mbstring.func_overload 2 в файле php.ini глобально, а не в конфиге веб сервера или fpm.
Видимо это какой то баг php, который никто фиксить уже не будет
Алий Кунашев, нет, именно баг в php, т.к. если задать mbstring.func_overload 2 в конфиге веб-сервера, то код strlen('я') выдаст 2, хотя должен 1. Это воспроизводится вне контекста битрикса
alexprowars, ага, полгода когда битрикс не ставился битрикссетапом не в счёт)) Вам же не приходилось ни разу оправдываться перед дюжиной людей почему битрикс на современном и стабильном php7.2 не работает))
Алексей это вообще улёт. Действительно помогло. 10/10, я считаю. крайне "очевидное" решение :) а есть мысли как это работает? мне казалось всегда, что если локальное значение для vhost и глобальное для всего скоупа и они равнозначны. просто частное переорпделяет общее. а тут магия...
в общем по совету с соседней ветки обсуждения решилось настройкой мастер-значения в php.ini. правда теперь аффектит остальные vhostы, но это уже совсем другая история.
https://www.php.net/manual/ru/mbstring.overload.php ну что тут не понятно? пришло время отделить мух от котлет - ставим mbstring.func_overload = "0" (собственно в мануале так и стоит) и заменяем в коде те места где шла подмена на mb_*