33

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

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

我已经尝试过 apt-get install php5-mbstring、php-mbstring、php-multibyte 等,但似乎都没有。

谁能指出我正确的方向?提前致谢!

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

./configure --enable-mbstring

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

4

4 回答 4

50

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

在 Red Hat 风格(CentOS、Fedora 等)上,您可以使用 yum install php-mbstring。

确保之后重新启动 Apache 服务器。在 RH 风格上使用 service httpd restart。

于 2013-11-01T13:46:08.113 回答
5

在你的安装是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.
于 2018-08-27T20:17:27.730 回答
2

有时人们会收到这种错误:致命错误:在第 188 行的 /public_html/this/this.php 中调用未定义的函数 mb_convert_encoding()。通常这种错误也出现在 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

于 2016-07-02T06:06:30.937 回答
0

检查是否安装了 MBString

-m您可以使用(Show compiled in modules) 参数知道它是否实际安装...

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

于 2021-12-29T18:33:51.260 回答