Подтвердить что ты не робот

Mb_convert_encoding, undefined функция, в то время как mbstring включена

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

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

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

Может ли кто-нибудь указать мне в правильном направлении? Спасибо заранее!

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

./configure --enable-mbstring

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

4b9b3361

Ответ 1

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

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

После этого перезапустите сервер Apache. Используйте сервис httpd restart на ароматах RH.

Ответ 2

У вас установлен libmbfl? Если это так - это должно быть показано в phpinfo() вывода как "многобайтовый строковый движок" в строке mbstring.

Ответ 3

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

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

Решение:

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

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

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