Убрать зависимость от настройки mbstring.func_overload.

Рейтинг: 142.9894  
Внедрено
Предложил Пользователь 87860 15.04.2015 14:06:05

Убрать зависимость от настройки mbstring.func_overload.

Идея уже была высказана несколькими годами ранее:
https://idea.1c-bitrix.ru/nezavisimost-ot-nastroyki-mbstringfuncoverload/

Но она не получила достойного обсуждения поддержки. Но ввиду последних событий, а именно - введения требования всеми компонентами Symfony требования отключенной опции mbstring.func_overload было принято решение возобновить обращение к Bitrix-разработчикам.

Уже на протяжении нескольких лет партнеры молча страдают из-за этого жесткого требования от Bitrix - не всегда есть возможность применить данную конфигурацию на хостинге клиента.

Разработчики, которые хоть когда-нибудь работали с библиотекой PHPExcel для обработки операций с XLS помнят, какой это тяжелый труд - переводить весь сайт с UTF-8 на WINDOWS-1251 только из-за того, что эта библиотека не работает с mbstring.func_overload. Или воовсе приходилось отказываться от работы с XLS.

Итак, когда разработчики Symfony ввели требование не поддерживать mbstring.func_overload - это полностью сломало совместимость рабочего окружения Bitrix и всех инструментов, которые используют в своей базе те или иные компоненты от Symfony.

Я понимаю. Сделать это изменение сейчас - не представляется возможным, так как уже есть куча клиентов у которых заинтегрированны алгоритмы с использованием mbstring.func_overload.

Но скоро будет выпуск php7, который итак сломает весь код клиентов. Я предлагаю включить это изменение в релиз Bitrix, который будет работать с php7 (если таковой вообще планируется).

В будущем я собираюсь призывать PHP-сообщество к запрету и удалению функционала mbstring.func_overload. Даже сами разработчики PHP пишут:

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

http://php.net/manual/ru/mbstring.overload.php
Рейтинг: 0  
Ответил Жуков Евгений 22.09.2020 16:01:50
Доступны дистрибутивы 20.5.393. Для существующих проектов - выпущены или тестируются обновления модулей (за исключением модуля compression - снят с использования, необходимо удалить).

Рейтинг: 2.5255  
Пользователь 129131 21.04.2015 09:35:09
Даже админы Бегет устали для меня ее включать, сказали сам настраивай свой любимый Битрикс:D
Рейтинг: 0.621  
Пользователь 70659 12.11.2015 13:20:20
Интересно что ни один представитель битрикс ничего не отписал.
А ведь поддержка PHP7 для битрикса просто необходима, иначе он будет оочень медленным по сравнению с движками, которые на PHP7 работают .
Рейтинг: 0  
Пользователь 87860 07.02.2016 23:57:52
Прошу проголосовать за обращение к разработчикам php для запрета использования настройки mbstring.func_overload: https://bugs.php.net/bug.php?id=65785
Рейтинг: 0  
Пользователь 87860 08.02.2016 16:05:43
Создал так же пулл-реквест в php-src: https://github.com/php/php-src/pull/1757
Рейтинг: 0  
Пользователь 87860 08.02.2016 16:05:59
Создал так же пулл-реквест в php-src: https://github.com/php/php-src/pull/1757
Рейтинг: 0.0849  
Пользователь 87860 20.02.2016 00:13:49
А вот и RFC, в котором предлагается сделать настройку mbstring.func_overload устаревшей

https://wiki.php.net/rfc/deprecations_php_7_1
Рейтинг: 2.0706  
Пользователь 110721 13.04.2016 15:53:27
а всего-то достаточно отключить эти настройки в php, выпилить проверки в Битриксе и подключить модуль symfony\polyfill-mbstring. Делов на пару апдейтов
Рейтинг: 0  
Пользователь 87860 28.11.2016 10:18:14
RFC по 7.1 не прошел. Ждем прохода RFC по 7.2

https://wiki.php.net/rfc/deprecations_php_7_2
Рейтинг: 0  
Пользователь 87860 28.11.2016 10:18:24
RFC по 7.1 не прошел. Ждем прохода RFC по 7.2

https://wiki.php.net/rfc/deprecations_php_7_2
Рейтинг: 7.8052  
Пользователь 87860 25.01.2017 11:35:53
Голосованием разработчиков php было принято, что в версии php7.2 будет запрещено использование mbstring.func_overload http://prntscr.com/e01vyp

В версии php8 mbstring.func_overload будет удален

Поздравляю всех!
Рейтинг: 1  
Пользователь 215394 26.11.2017 00:18:18
Битрикс умрет - ура!
Рейтинг: -2  
Пользователь 129131 26.11.2017 00:55:06
Би.. Би.. трикс жив и будет жить!
Рейтинг: 0.8902  
Пользователь 9010 24.03.2018 14:43:27
Забавно еще и то, что с mbstring.func_overload=2 1С-Битрикс работает медленнее на 20%.
Рейтинг: 1  
Пользователь 401738 06.08.2018 10:55:39
Столкнулся еще с одной неприятностью с данной штукой:
Переводили работу агентов на крон и столкнулись с проблемой - скрипт на кроне обрывается после вызова пролога
<require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");>

чтобы проверить это - добави до данной строки и после var_dump - до подключения отработал, а после - нет.
При этом, сервер выдал предупреждение:
PHP Deprecated:  The mbstring.func_overload directive is deprecated in Unknown on line 0

:(
Рейтинг: 1  
Пользователь 420455 07.11.2019 17:14:22
ребят, ну что, есть решение? избавиться от mbstring, чтобы не ловить Deprecated  на новых версиях php ?
Рейтинг: 0  
Пользователь 269 04.04.2020 19:56:43
Поддерживаю.
Рейтинг: -2  
Пользователь 36781 09.04.2020 16:56:25
Да просто тупо перевести кодировку сайта, БД, апача, локали на сервере в ср1251 и никакой mbstring.func_overload не нужен от слова совсем.

Хорошее элегантное решение :) !
Рейтинг: 0.8902  
Пользователь 280119 21.06.2020 17:07:34
Битриксоиды давно все силы бросили в б24, а на CMS положили болт.
По хорошему нужно было убрать mbstring.func_overload еще тогда, когда они объявили о переходе на PHP 7 и не позориться. Ну че смеяться - 2020 год на дворе. В профессиональной среде - стыдно признаться, что разрабатываю на "Битриксе"
Рейтинг: 0  
Пользователь 25773 22.09.2020 18:47:03
Поясните пожалуйста. Это точно к идее про mbstring.func_overload ответ?

Доступны дистрибутивы 20.5.393. Для существующих проектов - выпущены или тестируются обновления модулей (за исключением модуля compression - снят с использования, необходимо удалить).

обновление
v20.5.393 (beta)
2020-09-11
Исправлена ошибка в формировании ORM-запросов с DISTINCT.
Рейтинг: 0  
Пользователь 2106 22.09.2020 19:45:20
обновление
v20.5.393 (beta)
2020-09-11
Исправлена ошибка в формировании ORM-запросов с DISTINCT.

Артемий, дистрибутив != обновление. И да, это сообщение к этой идее. Дистрибутив можно (и нужно) ставить при выключенном (mbstring.func_overload 0) параметре.
Рейтинг: 0  
Пользователь 93386 30.11.2020 14:57:15
Отключил func_overload, теперь строковые функции не работают как ожидается, например strtolower не приводит к нижнему регистру русские буквы.
Рейтинг: 0  
Пользователь 93386 30.11.2020 14:57:33
неужели теперь нужно проходить все проекты, все шаблоны, компоненты, модули и пр. чтобы заменить однобайтовые функции?