Рейтинг: 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 тут

Нашел такую же идею тут. Нет возможности удалить, поэтому прошу голосовать в теме другого автора
Рейтинг: 3.609  
Новая
Предложил Минеев Алексей 18.11.2016 13:54:37

Маркетплейс. Ограничения на версию php

Предлагаю добавить возможность писать модули только с определёнными версиями php. Например, модуль может работать только в php >5.5.

Надоело просто писать array() вместо [] и хочется использовать новые возможности языка. Я думаю, все адекватные люди следят за актуальность версий php на своих серверах и кастомизируют сайты использяю последние возможности php.
Рейтинг: 2.8765  
Внедрено
Предложил Озерский Игорь 22.06.2016 10:04:04

Доработать restore.php под php7

1) При использовании restore.php под php 7 невозможно разархивировать базу - пишет ошибки про mysql_connect,  приходится в ручную восстанавливать
2) При переносе проекта с php5 на php7 неплохо чтобы скрипт проверял на строки подключения к базе в dbconn.php и  .settings.php

дописывал  
define("BX_USE_MYSQLI", true);
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
Рейтинг: 0  
Ответил Шаромов Денис 19.07.2016 18:51:33
Восстановление на PHP7 работает, правка dbconn.php и .settings.php пока нет, подумаем, как лучше сделать.
Рейтинг: 33.1397  
В работе
Предложил Валерий Чебан 21.11.2015 03:07:03

Сделать продукт совместимым с php7

Свершился релиз php7 и очень бы хотелось посмотреть на скорость работы уже сейчас :|

Fatal error: Cannot use 'String' as class name as it is reserved in bitrix\modules\main\lib\text\string.php on line 4

Fatal error: Argument 1 passed to Bitrix\Main\Diag\ExceptionHandler::handleException() must be an instance of Exception, instance of EngineException given in bitrix\modules\main\lib\diag\exceptionhandler.php on line 167

Fatal error: Argument 1 passed to Bitrix\Main\Diag\HttpExceptionHandlerOutput::renderExceptionMessage() must be an instance of Exception, instance of EngineException given, called in bitrix\modules\main\lib\diag\exceptionhandler.php on line 171 and defined in bitrix\modules\main\lib\diag\httpexceptionhandleroutput.php on line 11

... 
Рейтинг: 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