Рейтинг: 77.0116  
На голосовании
Предложил Харахнин Станислав 17.08.2017 10:56:47

PHP 7.2 Устарел mbstring.func_overload

Здравствуйте.

Коллеги, сейчас читал спецификацию по релизу PHP 7.2. Считаю важным обратить внимание разработчиков на важные момент. В данной версии mbstring.func_overload считается устаревшим и при не нулевом значении будет выбрасываться Deprecation notice. Это еще не критично, но стоит задуматься. Сейчас в битриксе при работе в uft-8 кодировке значение mbstring.func_overload = 2 является обязательным. Иначе сайт может не корректно работать.

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

Список изменений можно посмотреть тут и конкретно по mbstring.func_overload тут

Нашел такую же идею тут. Нет возможности удалить, поэтому прошу голосовать в теме другого автора
Рейтинг: 32.8035  
На голосовании
Предложил Ипатов Дмитрий 25.08.2015 07:14:20

Для utf-8 кодировки сайта отказаться от параметра mbstring.func_overload

Одним из требований для работы сайта в кодировке UTF-8 является директива mbstring.func_overload.
До php 5.3 значением директивы можно было управлять через .htaccess и проблем не возникало. Теперь значение этой переменной должно находиться в php.ini или где-нибудь в директивах apache.

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

Но достаточно много пользователей используют шэред хостинги и у них могут и будут возникать трудности.

Само по себе использование данной переменной в качестве обязательного требования для UTF-8 мне кажется не верным изначально. С php 5.3 оно еще и создает трудности.

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

p.s. Это мое личное мнение, если согласны плюсуйте)
Рейтинг: 109.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
Рейтинг: 5.525  
На голосовании
Предложил Евгений 25.05.2012 18:14:00

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

Ввиду того что utf-8 версия всё равно не может существовать без модуля mbstring, а большенство систем требуют отключения mbstring.func_overload, предлагается путём простой замены сделать bitrix независимым от настройки mbstring.func_overload.