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

Рейтинг: 106.9776  
На голосовании
Предложил dsxack 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

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

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

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

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

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

Поздравляю всех!
Рейтинг: 2  
Леушин Андрей 26.11.2017 00:18:18
Битрикс умрет - ура!
Рейтинг: 0  
Police King 26.11.2017 00:55:06
Би.. Би.. трикс жив и будет жить!
Рейтинг: 0.8902  
Кощеев Алексей 24.03.2018 14:43:27
Забавно еще и то, что с mbstring.func_overload=2 1С-Битрикс работает медленнее на 20%.
Рейтинг: 1  
Попович Алексей 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

:(
Рейтинг: 0  
Арсен 07.11.2019 17:14:22
ребят, ну что, есть решение? избавиться от mbstring, чтобы не ловить Deprecated  на новых версиях php ?