Не удалось вызвать встроенный метод mb_internal_encoding?

Я пытаюсь установить indefero на «коробку» CentOS 5.3 VMware и столкнулся с проблемой. Довольно рано во время установки я получаю сообщение об ошибке, которое я смог сузить до следующего:

[root@code /var/www/html]# cat x.php
 <?php
     mb_internal_encoding("UTF-8");
 ?>
[root@code /var/www/html]# php x.php
PHP Fatal error:  Call to undefined function mb_internal_encoding() in 
/var/www/html/x.php on line 2

Я получаю ту же ошибку при вызове этого скрипта через http через Apache. Теперь, в соответствии с руководством по PHP, функция mb_internal_encoding должна быть встроенной в PHP 5.

У меня CentOS 5.3 i386 (Linux code 2.6.18-53.1.21.el5 # 1 SMP Tue May 20 09:34:18 EDT 2008 i686 i686 i386 GNU / Linux), и я установил PHP 5.2.9.

[root@code /var/www/html]# php -v
PHP 5.2.9 (cli) (built: Jul  8 2009 06:03:36)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

Я дважды проверил: selinux отключен (пока).

Как я могу это исправить?


person Niels Basjes    schedule 01.08.2009    source источник
comment
Он действительно встроенный? Вызовите php -m, чтобы получить список встроенных модулей.   -  person VolkerK    schedule 01.08.2009


Ответы (6)


mbstring - это расширение "не по умолчанию", которое по умолчанию не включено; см. эту страницу руководства:

Установка

mbstring не является расширением по умолчанию. Это означает, что по умолчанию он не включен. Вы должны явно включить модуль с помощью параметра конфигурации. См. Подробности в разделе «Установка».

Итак, вам, возможно, придется включить это расширение, изменив файл php.ini (и перезапустив Apache, чтобы ваше изменение было учтено)


Я не использую CentOS, но вам, возможно, придется сначала установить расширение, используя что-то вроде этого (см. эту страницу, например, которая, кажется, дает решение):

yum install php-mbstring

(Название пакета может немного отличаться; поэтому используйте поиск yum, чтобы получить его :-))

person Pascal MARTIN    schedule 01.08.2009
comment
После того, как вы выполните yum install php-mbstring, вам нужно что-то сделать после этого? Я попробовал перезапустить apachectl, но без кубиков - person relipse; 19.05.2016
comment
yum install php70w-mbstring для php7 и да, требуется перезапуск apachectl restart - person Louis Loudog Trottier; 20.05.2017
comment
Для Ubuntu можно использовать apt install php-mbstring, а затем, конечно, перезапустить apache с systemctl restart apache2 - person Piyin; 16.11.2017
comment
@PascalMARTIN работает для меня ... но я не могу перезапустить сервер apache в centos. пожалуйста помоги. - person Ayyappa amara; 27.12.2017

Для Debian / Ubuntu:

sudo apt-get install php7.0-mbstring

person Akikon    schedule 27.10.2016
comment
sudo apt-get install php-mbstring в более поздних версиях. - person blue112; 04.12.2020

Если у кого-то возникают проблемы с установкой пакета php-mbstring в ubuntu, выполните следующие действия sudo apt-get install libapache2-mod-php5

person Balkrishna    schedule 06.10.2015
comment
Также стоит отметить, что при использовании php7.0 из репозитория ondrej / php правильным пакетом будет php7.0-mbstring. - person Dylan James McGannon; 16.06.2016

Если вы не знаете, как включить расширение php_mbstring в Windows, откройте свой php.ini и удалите точку с запятой перед расширением:

изменить это

;extension=php_mbstring.dll

к этому

extension=php_mbstring.dll

после модификации вам необходимо сбросить ваш php сервер.

person Serhat Türkman    schedule 27.12.2018

apt-get install php7.3-mbstring решил проблему на ubuntu, версия php - php-fpm 7.3

person Nidhin    schedule 07.06.2020

Для OpenSUse (менеджер пакетов zypper):

zypper install php5-mbstring

и:

zyper install php7-mbstring

С другой стороны, вы можете искать их через YaST Software manager.

Обратите внимание, что вы должны перезапустить http-сервер apache:

systemctl restart apache2.service
person Mostafa    schedule 16.02.2017