Mb_convert_encoding,启用mbstring时未定义的函数


mb_convert_encoding, undefined function while mbstring is enabled

我有一个服务器(Ubuntu 11.10 x64)运行PHP 5.3.8与Apache2/MySQL。我目前正在做一个项目,我需要做一些特定的字符编码,但我发现没有一个多字节(mb_*函数)是工作的。

但是,当我查看phpinfo()时,我看到多字节支持是启用的。

我试过像apt-get install php5-mbstring, php-mbstring, php-multibyte等,但似乎没有工作。

谁能给我指一下正确的方向吗?提前感谢!

edit:通过重新编译PHP修复它(这是我最后的手段,我最初想避免)

。/配置——enable-mbstring

奇怪的是,phpinfo()已经显示它是启用的。我不知道为什么它之前不工作:/

很多较新的Linux服务器默认没有安装PHP Multibyte模块。一个简单的解决方案通常是安装php-mbstring。

在Red Hat版本(CentOS, Fedora等)你可以使用yum install php-mbstring

确保之后重新启动Apache服务器。

在您的安装是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.

有时人们会收到这种错误:致命错误:调用/public_html/this/this.php中188行未定义的函数mb_convert_encoding()。通常这种错误也出现在PHP站点和PHP框架中。

看起来你的服务器上没有安装PHP mbstring

解决方案:

在我的情况下,我只是在php.ini文件中取消注释;extension=php_mbstring.dll,问题已经解决。

取消注释后不要忘记重新启动apache server;extension=php_mbstring.dll

代码取自本博客:http://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html

检查MBString是否已安装

你可以知道它是否实际安装与-m(显示编译在模块)参数…

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是否实际安装