Mbstring как исправить

Для корректной работы Bitrix версии 20.100.0 и ниже нужно указывать дополнительные параметры mbstring.func_overload и mbstring.internal_encoding. Если этого не сделать, в процессе работы система будет выдавать ошибку. Добавить эти параметры можно в php.ini и в .htaccess. Лучше всего делать это в файле php, так как у настройки .htaccess есть ограничения, о которых мы расскажем ниже.

Для настройки параметров:

  1. 1.

    Перейдите в файл php.ini. Найти файл вам поможет статья.

  2. 2.

    Добавьте записи:

    mbstring.func_overload = 2
    mbstring.internal_encoding = UTF-8
  3. 3.

    Сохраните изменения.

Также подобную настройку можно сделать в файле .htaccess.

Обратите внимание! PHP версии старше 5.2 не читают mbstring.func_overload из файла .htaccess. Если у вас версия PHP выше 5.2, для настройки используйте только php.ini.

Для настройки параметров Битрикс:

  1. 1.

    Откройте .htaccess.

  2. 2.

    Добавьте записи:

    php_value mbstring.func_overload 2
    php_value mbstring.internal_encoding UTF-8
  3. 3.

    Сохраните изменения.

Для новых версий Bitrix эти параметры не нужны, поэтому при обновлении их нужно удалить. У параметра mbstring.func_overload можно указать значение 0. Подробнее о том, как это сделать, читайте в статье Как удалить настройку PHP mbstring.func_overload.


Photo from Unsplash

When running phpMyAdmin, you may see an error that says the mbstring extension is missing as follows:

This error prevents you from opening phpMyAdmin and accessing your database.

To solve this error, you need to have mbstring installed and activated in your PHP configuration.

Depending on your Operating System, there are different ways to install and enable the mbstring extension:

Install mbstring for Linux

For Linux systems, you can install mbstring using apt-get or yum depending on your Linux distribution.

Here’s the command to install mbstring for Debian / Ubuntu or Red Hat Linux:

sudo apt-get install php-mbstring

# for RHL:
sudo yum install php-mbstring

The package manager should install the right mbstring version based on your PHP version.

If not, you need to specify the version as follows:

# install mbstring v8.1
sudo apt-get install php8.1-mbstring

# install mbstring v7.4
sudo apt-get install php7.4-mbstring

Once the extenson is installed, you need to restart your PHP server.

For Apache, run the following command:

Now you can check if the mbstring extension is enabled by running phpinfo() function to see the mbstring enabled:

You can also run the php -m | grep mbstring command to see the extension from the command line:

$ php -m | grep mbstring
mbstring

Now that the mbstring extension is available, you should be able to access phpMyAdmin.

Install mbstring for Windows

For Windows system, you need to enable the mbstring extension from the php.ini file.

Look for the line extension=php_mbstring.dll in your php.ini file as follows:

;extension=php_mssql.dll
;extension=php_mbstring.dll
;extension=php_exif.dll  
extension=php_mysql.dll

You need to remove the semicolon before the extension config to enable php_mbstring.dll for Windows.

;extension=php_mssql.dll
extension=php_mbstring.dll
;extension=php_exif.dll  
extension=php_mysql.dll

Once you enable the extension, restart your PHP server. The mbstring extension should now be available on your Windows computer.

If that doesn’t work, search your php.ini file for the extension_dir config.

You should see where PHP look for the extensions as shown below:

extension_dir = "D:XAMPPphpext"

You need to see if the php_mbstring.dll exists inside the D:XAMPPphpext path. Copy the extension directory value and paste it to your explorer windows.

If the .dll file is not present, you need to download the PHP Windows build from windows.php.net as shown below:

Extract the downloaded zip file, then look for the php_mbstring.dll file from the ext/ folder. Copy the file to your extension_dir path.

I don’t recommend downloading dll files from the Internet because you may get a virus on your computer.

Restart your PHP server, and now the mbstring extension should be available.

And that’s how you enable mbstring on Windows computers.

Install mbstring for macOS

For macOS, the PHP formula from Homebrew already enabled the mbstring extension during the installation process.

You should have mbstring enabled by default when you install PHP using Homebrew.

But if you install PHP using MacPorts, then you may need to install mbstring separately.

The following command should work when you’re using MacPorts:

# 👇 install PHP 7.4 mbstring 

sudo port install php74-mbstring

# 👇 install PHP 8.0 mbstring 

sudo port install php80-mbstring

You can see the available mbstring version from macports.org.

Now you’ve learned how to enable the PHP mbstring extension on macOS. Good work! 👍

Looking for ways to manage special text on your websites?

One of the best ways for this is to enable mbstring in php.ini.

Usually, mbstring extension in web servers helps to manage the non-ASCII codes easily.

At Bobcares, we often get requests to enable mbstring extension, as a part of our Server Management Services.

Today, let’s see how our Support Engineers enable the mbstring extension for our customers.

How does mbstring error look?

Let’s begin by checking more details on mbstring and how the error appears on any website.

By default, mbstring makes multibyte encoding possible in PHP. This PHP extension helps in managing non-ASCII string. A typical example would be a website that handles musical quotes. It helps to manipulate strings encoded in a multi-byte encoding.

In many situations, customers get an error message related to missing PHP extensions. This particularly happens after enabling PHP function for wrong version of PHP. Or when the website uses an alternate PHP version.

For instance, while trying to enter phpMyAdmin and the mbstring module is missing on the server, it results in an error:

phpMyAdmin error due to improper enabling of mbstring in php.ini

How we enable mbstring in php.ini?

Usually, adding the extension in the php.ini file enables mbstring. But, this procedure varies with different platforms.

With the expertise in Server Management, our Dedicated Engineers enable the mbsting module for our customers.

Let’s see the multiple ways that we use to enable mbstring on various platforms.

1. mbstring in Linux

Linux servers provide an easy way to enable PHP extensions.

Firstly, our Support Team check for the mbstring module using the command,

php -m | grep mbstring

If there is no such module, then we install it using the command,

yum install php7x-mbstring

Afterward, we make sure the presence of necessary extension in the PHP include file. A sample entry looks like:

[root@xxx ~]# cat /etc/php.d/mbstring.ini
; Enable mbstring extension module
extension=mbstring.so

Later we ensure to restart the webserver to save the changes. This enables PHP mbstring on the server. Finally, we verify the same by adding a web page that dispaly the results of the phpinfo() function.

2. In Windows

In the Windows server, the addition of the .dll files holds multiple codes and procedures. So, the Support Team first makes sure that the .dll file is present in the server.

Usually, php.ini is the file that contains all the PHP parameters. Thus, we access the php.ini file.

We check for the entry regarding the mbstring extension in the configuration file. We uncomment the line,

extension = php_mbstring.dll

Later, we save the changes and restart the webserver.

3. Enabling mbstring in cPanel

In servers having a cPanel, it is easier to enable mbstring. So, for cPanel customers we enable mbstring as follows:

  1. Firstly, we login to the cPanel account.
  2. Next, we go to the Software section.
  3. Here, we click the drop-down to Select the PHP version.
  4. Now, select the PHP extension mbstring.
  5. Finally, click the save button.

[Having difficulty in enabling PHP mbstring? – We will do it for you.]

Conclusion

In short, to manage non-ASCII strings, we enable mbstring in php.ini. Today, we saw how to enable mbstring on different server platforms. We also saw how our Support Engineers fix the mbstring error in phpMyAdmin.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

var google_conversion_label = «owonCMyG5nEQ0aD71QM»;

  1. install mbstring and restart your apache:

    sudo apt-get install php-mbstring
    sudo service apache restart
    

then remove ; from your php.ini file:

;extension=php_mbstring.dll

to

extension=php_mbstring.dll

If it still doesn’t work..remove your php setup, without removing the databases from your phpmyadmin. Reinstall it.

NB: * if you want to remove all, all mention the one you need to.

sudo apt-get remove php* 

Then install the php and modules of the php version that you need. here, php 7.1:

sudo apt-get install php7.1 php7.1-cli php7.1-common libapache2-mod-php7.1 php7.1-mysql php7.1-fpm php7.1-curl php7.1-gd php7.1-bz2 php7.1-mcrypt php7.1-json php7.1-tidy php7.1-mbstring php-redis php-memcached

restart your apache and check the php version.

sudo service apache restart
php -v

when all this is done, execute the following command to enable mbstring forcefully and restart your apache.

sudo phpenmod mbstring
sudo service apache restart

Hope it helps.
It did to me :)

 

Пользователь 1418

Постоянный посетитель

Сообщений: 181
Баллов: 15
Авторитет:

1

Рейтинг пользователя:

1

Регистрация: 21.03.2005

Можно ли исправить это:
«Установлена перегрузка функции PHP mbstring. Это можно выключить, локально добавлением строки ‘php_value mbstring.func_overload 0’ в файле .htaccess.»
добавление строчки ‘php_value mbstring.func_overload 0’ в файл .htaccess ничего не дает… в php.ini тоже самое…

Где и как можно исправить ситуацию….

Извините за неграмотность…

 

Пользователь 14571

Эксперт

Сообщений: 787
Баллов: 104
Авторитет:

1

Рейтинг пользователя:

7

Регистрация: 10.08.2007

А у  меня всегда давало. :)

Даже сложно предположить, что не так..  :)

 

Пользователь 30895

Заглянувший

Сообщений: 1
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 09.10.2008

Перезагрузить IIS скорее всего надо было

 

Пользователь 76914

Заглянувший

Сообщений: 2
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 25.11.2010

Если база была загружена в однобайтной кодировке, в файле .htaccess нужно раскомментировать

 php_value mbstring.func_overload 0
mbstring.internal_encoding=ISO-8859-1

В русской раскладке всё заработает корректно. Перезагружать сервер не обязательно.

 

Пользователь 100109

Заглянувший

Сообщений: 2
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 02.10.2011

Где найти на в административной части строку mbstring.func_overload ???
Дайте, пожалуйста, конкретную ссылку, направление где искать!

Техподдержка не реагирует.

 

Пользователь 29330

Постоянный посетитель

Сообщений: 129
Баллов: 15
Авторитет:

1

Рейтинг пользователя:

1

Регистрация: 09.09.2008

Искать нужно не в административной части Bitrix, и  вообще не в Битрикс. А в конфигурационном файле php.ini. Либо в файле .htaccess в корневой директории вашего сайта.

 

Пользователь 140260

Заглянувший

Сообщений: 8
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 26.09.2012

если виртуальная машина то тут — /etc/php.d/bitrixenv.ini

 

Пользователь 174147

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.04.2013

PHP версии старше 5.2 не читают mbstring.func_overload из файла .htaccess.

Добавьте строчку в файл /etc/php.d/mbstring.ini:

extension=mbstring.so
mbstring.func_overload=0
Подробнее:

Ошибка Bitrix mbstring.internal_encoding и mbstring.func_overload

 

Пользователь 19040

Постоянный посетитель

Сообщений: 264
Баллов: 21
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 21.12.2007

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

 

Пользователь 217759

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.09.2013

#10

0

23.09.2013 20:13:59

Тема давнишняя, но спрошу, а какие последствия будут если забить на тот 0, который показывается при установке?

 

Пользователь 219522

Заглянувший

Сообщений: 15
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 04.10.2013

#11

0

13.11.2013 15:43:14

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

ps. нет, не изза этого. конфиг этот подправил, все равно не отправляется(причем только при при оформлении заказа в инет магазине)
p.p.s. Почта отправлялась изза того что не хватало памяти. Перешли на тариф с 192 ОЗУ и все заработало.
а если выставлять mbstring = 0, единственный глюк что я нашел:

при включенном режиме правки, пытаемся редактировать параметры компонента, высвечивается окно которое должно быть с параметрами, и в нем сообщение:
«Не удалось обнаружить код вызова компонента.» Приходится править параметры компонента либо в исходнике(в коде вызова компонента), либо через визуальный редактор страницы.

 

Пользователь 174147

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.04.2013

#12

0

02.12.2013 23:57:41

PHP версии старше 5.2 не читают mbstring.func_overload из файла .htaccess. Добавьте строчку в файл /etc/php.d/mbstring.ini:
extension=mbstring.so
mbstring.func_overload=0
Обратите внимание, в файле .htaccess значение параметра указывается через пробел а в mbstring.ini с =
Более подробно, у меня на сайте

mbstring.func_overload переменная окружения 1С Битрикс

 

Пользователь 247123

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 08.04.2014

#13

0

08.04.2014 16:04:29

Нет этой строки /etc/php.d/mbstring.ini:
Нельзя ли все это как то решить, раз и навсегда? У разного хостера одно и тоже? и везде надо все подписывать и дописывать?

 

Пользователь 371327

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 17.08.2015

#14

0

17.08.2015 11:17:08

 

 

Пользователь 383005

Заглянувший

Сообщений: 2
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 22.09.2015

#15

1

04.11.2015 17:58:27

Можно mbstring.func_overload изменить «Местечково» например только для заданной папки где у вас работает скрипт требующий ее отключения. Делается на сервере под апачем тут etc/apache2/conf.d/httpd.conf, для виртуальной машины битрикс тут etc/httpd/conf/httpd.conf. Добавляем строки например для папки /personal/promo/
<Directory /home/bitrix/www/personal/promo/>
php_admin_value mbstring.func_overload 0
</Directory>

 

Пользователь 592669

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.05.2016

#16

1

21.10.2016 10:47:15

Цитата
КОМАН СТИНС написал:
Можно mbstring.func_overload изменить «Местечково» например только для заданной папки где у вас работает скрипт требующий ее отключения. Делается на сервере под апачем тут etc/apache2/conf.d/httpd.conf, для виртуальной машины битрикс тут etc/httpd/conf/httpd.conf. Добавляем строки например для папки /personal/promo/
<Directory /home/bitrix/www/personal/promo/>
php_admin_value mbstring.func_overload 0
</Directory>

Как быть в ситуации когда надо его отключить для собственных печатных форм магазина?
Сами печатные формы лежат в /bitrix/admin/reports, но вызов происходит /bitrix/admin/sale_print.php?… соответственно чтобы отключить mbstring.func_overload надо добавить
<Directory /var/www/bitrix/admin/>
 php_admin_value mbstring.func_overload 0
</Directory>

но в этой папке лежит много другого и результат может быть непредсказуемым

 

Пользователь 23706

Гуру

Сообщений: 2616
Баллов: 427
Авторитет:

1

Рейтинг пользователя:

35

Регистрация: 18.04.2008

#17

0

21.10.2016 12:46:10

Александр Соболев,

Код
<Directory /var/www/bitrix/admin/>
php_admin_value mbstring.func_overload 0 
</Directory>

Попробуйте сделать тоже самое но для

файла

Код
<Files "cat.html">
    # Insert stuff that applies to cat.html here
</Files>
 

Пользователь 266964

Посетитель

Сообщений: 63
Баллов: 5
Авторитет:

0

Рейтинг пользователя:

1

Регистрация: 19.04.2015

#18

2

29.11.2017 22:44:43

На дворе конец 17-го, разрабы всё так-же оставляют этот скелет в шкафу, обосновавшийся там ещё времен безнадежно устаревшей кодировки, и даже мизинцем повести не желают. Это аргумент в «пользу»…

 

Пользователь 266964

Посетитель

Сообщений: 63
Баллов: 5
Авторитет:

0

Рейтинг пользователя:

1

Регистрация: 19.04.2015

#19

1

29.11.2017 22:55:40

А ещё дико бесит, что уведомления о моих новых сообщениях в этом форуме мне же на почту приходят, и так было всегда. Этот фикс так вообще пара строчек кода, но разрабам п…

 

Пользователь 291336

Эксперт

Сообщений: 1497
Баллов: 244
Авторитет:

31

Рейтинг пользователя:

4

Регистрация: 08.11.2014

#20

0

30.11.2017 20:39:17

Цитата
Евгений Крохин написал:
На дворе конец 17-го, разрабы всё так-же оставляют этот скелет в шкафу, обосновавшийся там ещё времен безнадежно устаревшей кодировки, и даже мизинцем повести не желают. Это аргумент в «пользу»…

да прям вообще «трагедия века».
с учетом того что предоставляется готовое окружение и куча хостеров у которых одной кнопкой можно настроить совместимость сайта с bitrix

Прикрепленные файлы

Снимок экрана_2017-11-30_21-36-19.png (35.66 КБ)

Как создать лендинг из любого готового решения Bitrix

 

Пользователь 266964

Посетитель

Сообщений: 63
Баллов: 5
Авторитет:

0

Рейтинг пользователя:

1

Регистрация: 19.04.2015

#21

3

30.11.2017 21:08:11

Цитата
да прям вообще «трагедия века».
с учетом того что предоставляется готовое окружение и куча хостеров у которых одной кнопкой можно настроить совместимость сайта с bitrix

«Уважаемый», не говорите глупостей, чтобы не вам не сказали куда надо пойти…

Во первых я хорошо себе представляю что и где и как нужно прописывать, в php.ini или в .htaccess, но разница есть в некоторых случаях, и на некоторых площадках…

Во вторых у меня на DEV-сервере крутится куча проектов, который я настраивал под свои нужды в то время, когда ещё ни кто не знал про Битрикс, и уже в то время всё прекрасно работало на UTF-8 безо всяких «сопель». И только Битрикс требует к себе подобного «внимания», сказать, что это настораживает, значит не сказать ни чего.

И теперь внимание:

Данный функционал объявлен УСТАРЕВШИМ начиная с PHP 7.2.0 и его использование крайне не рекомендовано.

Ну т.е. такое… платная, недешевая система вот с такой вот детской болезнью…

Картинка, поржать:

Прикрепленные файлы

2017-11-30_23-06-55.png (6.94 КБ)

 

Пользователь 242913

Заглянувший

Сообщений: 33
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 17.02.2014

#22

4

17.11.2020 17:47:11

В связи с обновлением многие будут искать, оставлю инструкцию что делать:

открываем файл:
/etc/php.d/z_bx_custom.ini

добавляем (или изменяем на 0 если есть директива):
mbstring.func_overload = 0

перезапускам сервисы
/bin/systemctl restart httpd.service && /bin/systemctl restart nginx.service

 

Пользователь 901959

Постоянный посетитель

Сообщений: 177
Баллов: 31
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.12.2017

#23

0

17.11.2020 21:35:48

bitrix0111, в /etc/php.d/bitrixenv.ini тоже желательно проверить чтобы не было директивы

 

Алексей Шафранский

Администратор

Сообщений: 1019
Баллов: 198
Авторитет:

1

Рейтинг пользователя:

1

Регистрация: 28.07.2008

#24

1

18.11.2020 19:16:08

bitrix0111, Дмитрий Б, или просто накатить vmbitrix 7.4.4 :)

https://dev.1c-bitrix.ru/community/forums/messages/forum32/topic122887/message6667­12/#message666712

Понравилась статья? Поделить с друзьями:
  • Как исправить экокожу на диване после кота
  • Как найти беглого андроида fallout 3
  • Как составить задаток письменно
  • Как найти в компьютере документы которые распечатывала
  • Как найти обобщенную силу