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 действительно установлен.