Изменение mbstring.func_overload и internal_encoding
Наши клиенты, установив одну из популярных систем управления сайтом, сталкивались с тем, что данная CMS требовала изменить стандартные настройки параметров PHP mbstring.func_overload и mbstring.internal_encoding.
В частности, система требует прописать настройки:
Почему не меняются mbstring.func_overload и internal_encoding?
Как изменить mbstring.func_overload и internal_encoding?
Изменить настройки mbstring.func_overload и mbstring.internal_encoding в современных конфигурациях можно несколькими способами, но до этого потребуется определиться с тем, какой услугой Вы пользуетесь (хостинг с php, VDS или сервер) и режимом работы php.
Если с первым вопросом проблем не возникнет, то с режимом php несколько сложнее. Узнать о режиме работы можно из функции phpinfo, найдя строку: «Server API», где может быть указано «Apache … Handler» или иное. Значение «Apache … Handler» укажет нам на то, что PHP работает в режиме mod_php, иное значение укажет на режим CGI или аналогичный.
Изменение настроек для режима mod_php
Изменение mbstring.func_overload и mbstring.internal_encoding в режиме модуля Apache на хостинге с PHP можно выполнить, только обратившись в техническую поддержку хостинга.
При использовании своего сервера (VPS/VDS или контейнера) достаточно будет внести изменения в настройки файла httpd.conf в секцию VirtualHost сайта, для которого вносятся изменения, где указать:
Изменение настроек для PHP в иных режимах
Изменить mbstring.func_overload и mbstring.internal_encoding в иных режимах, таких как: CGI, FastCGI и т.д., доступно, как на обычном хостинге, так и на собственном VDS или сервере.
В этом режиме изменение можно произвести простой модификацией пользовательского файла php.ini, где следует указать:
Универсальный метод изменения настроек
Мы сталкивались с конфигурациями систем, на которых отсутствовала возможность изменить параметры mbstring.func_overload и mbstring.internal_encoding, указанными выше методами.
В этом случае для хостинга единственным методом решения проблемы будет обращение в техническую поддержку.
Где и как можно исправить ситуацию.
Извините за неграмотность.
php_value mbstring.func_overload 0
mbstring.internal_encoding=ISO-8859-1
В русской раскладке всё заработает корректно. Перезагружать сервер не обязательно.
я забил. у меня поставилось. в инет магазине почта не отправляется, не пойму почему. Возможно изза этого.
ps. нет, не изза этого. конфиг этот подправил, все равно не отправляется(причем только при при оформлении заказа в инет магазине)
p.p.s. Почта отправлялась изза того что не хватало памяти. Перешли на тариф с 192 ОЗУ и все заработало.
а если выставлять mbstring = 0, единственный глюк что я нашел:
при включенном режиме правки, пытаемся редактировать параметры компонента, высвечивается окно которое должно быть с параметрами, и в нем сообщение:
«Не удалось обнаружить код вызова компонента.» Приходится править параметры компонента либо в исходнике(в коде вызова компонента), либо через визуальный редактор страницы.
Нет этой строки /etc/php.d/mbstring.ini:
Нельзя ли все это как то решить, раз и навсегда? У разного хостера одно и тоже? и везде надо все подписывать и дописывать?
| Цитата |
|---|
| КОМАН СТИНС написал: Можно mbstring.func_overload изменить «Местечково» например только для заданной папки где у вас работает скрипт требующий ее отключения. Делается на сервере под апачем тут etc/apache2/conf.d/httpd.conf, для виртуальной машины битрикс тут etc/httpd/conf/httpd.conf. Добавляем строки например для папки /personal/promo/ php_admin_value mbstring.func_overload 0 |
Как быть в ситуации когда надо его отключить для собственных печатных форм магазина?
Сами печатные формы лежат в /bitrix/admin/reports, но вызов происходит /bitrix/admin/sale_print.php. соответственно чтобы отключить mbstring.func_overload надо добавить
php_admin_value mbstring.func_overload 0
но в этой папке лежит много другого и результат может быть непредсказуемым
| Цитата |
|---|
| Евгений Крохин написал: На дворе конец 17-го, разрабы всё так-же оставляют этот скелет в шкафу, обосновавшийся там ещё времен безнадежно устаревшей кодировки, и даже мизинцем повести не желают. Это аргумент в «пользу». |
| Цитата |
|---|
| да прям вообще «трагедия века». с учетом того что предоставляется готовое окружение и куча хостеров у которых одной кнопкой можно настроить совместимость сайта с bitrix |
«Уважаемый», не говорите глупостей, чтобы не вам не сказали куда надо пойти.
Во вторых у меня на DEV-сервере крутится куча проектов, который я настраивал под свои нужды в то время, когда ещё ни кто не знал про Битрикс, и уже в то время всё прекрасно работало на UTF-8 безо всяких «сопель». И только Битрикс требует к себе подобного «внимания», сказать, что это настораживает, значит не сказать ни чего.
Данный функционал объявлен УСТАРЕВШИМ начиная с PHP 7.2.0 и его использование крайне не рекомендовано.
Ну т.е. такое. платная, недешевая система вот с такой вот детской болезнью.
В связи с обновлением многие будут искать, оставлю инструкцию что делать:
Ошибка: Удалите настройку PHP mbstring.func_overload
При обновлении коробочной версии Битрикс24 вы можете получить уведомление: Для обновления продукта необходимо удалить настройку PHP mbstring.func_overload. Пожалуйста, внесите необходимые изменения или обратитесь в службу технической поддержки вашего хостинга.

Что это значит
Функционал mbstring.func_overload объявлен устаревшим, начиная с PHP 7.2.0, и его использование крайне не рекомендовано.
В связи с этим в продуктах «1С-Битрикс» прекращается поддержка данного параметра PHP. Вы не сможете установить обновления продукта, пока вы не удалите этот параметр в конфигурации PHP вашего сервера.
Что делать
Перейдите в административном меню в раздел Настройки → Инструменты → Диагностика → Настройки PHP:

В открывшем окне найдите в настройках PHP параметр mbstring.func_overload :

Если его значение не равно 0, то вам нужно удалить этот параметр в конфигурации PHP сервера или выставить равным 0 ( mbstring.func_overload=0 ).
Чтобы выполнить эти рекомендации, вам нужно обратиться к вашему системному администратору или хостинг-провайдеру.
То же самое можно сделать и вручную в VMBitrix:
Установка Битрикс в кодировке UTF8 и проблема с mbstring.func_overload
| It’s not possible to change it in perdir configs anymore. Fix for bug #43227 changed this. Apparently Rui forgot to document it..smile:) |
Вот собственно и вся новость. Думаю, что она будет полезна многим и снимет ряд вопросов.
У себя будем откатываться назад на PHP 5.2.6
Все ошибки пропали, все зеленым цветов в установке, начал устанавливать, все ок и тут на тебе:
У меня Виртуальная машина Битрикс 4.3 столкнулся с подобной проблемой на PHP 5.3 и решил ее! 8)
Писал в тех. поддержку следующее:
| Доброго времени суток, на виртуальной машине Битрикс есть 2 сайта. Требуются следующие настройки: |
Для сайта http://top.seoup.su/
mbstring.func_overload=0
mbstring.internal_encoding=utf-8
Для сайта http://seoup.su/
mbstring.func_overload=2
mbstring.internal_encoding=utf-8
Сделать разные настройки не получится.
Нужно выполнить следующие шаги, мне это помогло.
1. По умолчанию выставить mbstring.func_overload=0 в файле «/etc/php.d/custom/php.ini» если его нет, то создаем его! Внутри пишем
3. Убираем/закоментим на всякий случай определение в «.htaccess» в папке «/home/bitrix/www»
Теперь «Проверка системы» проходит без ошибок, и не показывается сообщение при свойствах или копировании компонента
Установка Битрикс в кодировке UTF8 и проблема с mbstring.func_overload
| It’s not possible to change it in perdir configs anymore. Fix for bug #43227 changed this. Apparently Rui forgot to document it..smile:) |
Вот собственно и вся новость. Думаю, что она будет полезна многим и снимет ряд вопросов.
У себя будем откатываться назад на PHP 5.2.6
При установки битрикса на хостинге возникает такая проблема: для установки продукта в кодировке UTF-8 необходимо установить библиотеку mbstring с параметрами mbstring.func_overload больше 2, mbstring.internal_encoding=UTF-8.
В конфигурации PHP включен, несовместимый с phpMyAdmin, параметр mbstring.func_overload. Для предотвращения возможной потери данных, данный параметр должен быть выключен!
предупреждение в пхпадмин.
сделано как в UPDATED у автора.
мде.
удалите ссылочку, а то кто-нибудь прочитает.
во-первых, по ней бредовая инфа.
во-вторых, здесь в комментах описано решение.
в итоге запутался и не понял
что вписать в php.ini
define(‘BX_UTF’, true);
стоит
написали ведь выше
php_admin_value mbstring.func_overload 2
в httpd конкретного хоста
выложите фрагмент вашего конфигурационного файла и журнала ошибок веб-сервера
у вас используется http://www.suphp.org
suphp использует php-cgi, и не поддерживает php_admin value.
FreeBSD 8.2, Apache 2.2.17+Nginx, PHP 5.2.17(Fast-CGI), вылазят те же ошибки:
| — mbstring.func_overload | >=2 | 0 |
| — mbstring.internal_encoding | UTF-8 | Не установлен |
Попробовал раскомментировать в php.ini, результат тот же.
Перезапускал. Оказалось из домашней папки тянул настройки (home/xxxxx/data/php-bin/php.ini)
Решение через php.ini не нравится, так как на сервере крутится еще порядка 100 сайтов, которые удачно легли после изменения настроек, а из-за 1-го менять для всех.
Вырезки из http.conf (/usr/local/etc/apache22) для домена bitrix.site.ru
увы, в вашем случае уже не подскажу.
обратитесь к вашему системному администратору или читайте документацию
| Внимание! Сайт работал в однобайтовой кодировке, а конфигурация сервера рассчитана на кодировку UTF-8. Установите mbstring.func_overload=0 или mbstring.internal_encoding=ISO-8859-1 |
Все ошибки пропали, все зеленым цветов в установке, начал устанавливать, все ок и тут на тебе:
У меня Виртуальная машина Битрикс 4.3 столкнулся с подобной проблемой на PHP 5.3 и решил ее! 8)
Писал в тех. поддержку следующее:
| Доброго времени суток, на виртуальной машине Битрикс есть 2 сайта. Требуются следующие настройки: |
Для сайта http://top.seoup.su/
mbstring.func_overload=0
mbstring.internal_encoding=utf-8
Для сайта http://seoup.su/
mbstring.func_overload=2
mbstring.internal_encoding=utf-8
Сделать разные настройки не получится.
Нужно выполнить следующие шаги, мне это помогло.
1. По умолчанию выставить mbstring.func_overload=0 в файле «/etc/php.d/custom/php.ini» если его нет, то создаем его! Внутри пишем
3. Убираем/закоментим на всякий случай определение в «.htaccess» в папке «/home/bitrix/www»
Теперь «Проверка системы» проходит без ошибок, и не показывается сообщение при свойствах или копировании компонента

