mb_convert_encoding, неопределенная функция, пока включена mbstring

У меня есть сервер (Ubuntu 11.10 x64) под управлением PHP 5.3.8 с Apache2 / MySQL. В настоящее время я работаю над проектом, в котором мне необходимо выполнить определенную кодировку символов, но я обнаружил, что ни одна из многобайтовых (mb_* функций) не работает.

Однако, когда я смотрю в phpinfo(), я вижу, что многобайтовая поддержка включена.

Я пробовал такие вещи, как apt-get install php5-mbstring, php-mbstring, php-multibyte и т. Д. И т. Д., Но, похоже, ни один из них не работает.

Кто-нибудь может указать мне правильное направление для этого? Заранее спасибо!

редактирование: исправлено путем перекомпиляции PHP (это был мой последний вариант, которого я изначально хотел избежать)

./configure --enable-mbstring

Странно, но phpinfo () уже показал, что он включен. Я не знаю, почему это не сработало раньше:/

4 ответа

Решение

На многих более новых серверах Linux по умолчанию не установлены многобайтовые модули PHP. Простым решением часто является установка php-mbstring.

В версиях Red Hat (CentOS, Fedora и т. Д.) Вы можете использовать yum install php-mbstring.

Убедитесь, что вы перезапустите свой сервер Apache после этого. Воспользуйтесь сервисом httpd restart на RH flavors.

В случае вашей установки php5.6 аналогичен решению neilsimp1:

Бег sudo apt-get install php7.0-mbstring а потом sudo service php7.0-fpm перезагрузка сделала свое дело для меня.

sudo apt-get install php5.6-mbstring

а затем перезапустите службу Apache

sudo service apache2 restart.

Иногда люди получают такие ошибки: фатальная ошибка: вызов неопределенной функции mb_convert_encoding() в /public_html/this/this.php в строке 188. Обычно ошибки такого рода встречаются и на сайтах PHP и в фреймворке PHP.

Похоже, PHP mbstring не установлен на вашем сервере.

Решение:

В моем случае я просто раскомментировал: extension=php_mbstring.dll в файле php.ini, и проблема была решена.

Не забудьте перезапустить сервер apache после раскомментирования;extension=php_mbstring.dll

Код взят из этого блога: http://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html

Проверьте, установлен ли MBString

Вы можете узнать, действительно ли он установлен или нет, с помощью-m(Показать скомпилированное в модулях) arg ...

      php -m | grep mbstring

Если он установлен, вы увидите mbstringкак вывод выше, или пустым, если он не установлен.

Установить MBString

Если у вас есть новейший PHP ( сейчас PHP8 ), вы можете установить с...

      apt-get install php-mbstring 
yum install php-mbstring

Если у вас PHP7 и вам нужна более старая MBString, установите с...

      apt-get install php7.0-mbstring
yum install php7.0-mbstring

Перезагрузите сервер

Перезапустите сервер после установки, выполнив это в командной строке:

      /etc/init.d/apache2 restart

Вернитесь к шагу 1, чтобы убедиться, что MBString действительно установлен.

Другие вопросы по тегам