51

我在尝试按照本教程设置 LAMP 后收到此错误,我发现自己在尝试设置 phpmyadmin 后收到上述错误。

致命错误:在第 177 行调用 C:\WebServer\Apache\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc 中未定义的函数 mb_detect_encoding()

我遵循了这里的建议:尝试访问 phpmyadmin mb_detect_encoding 时出现 PHP 致命错误,并进行了这些更改。

当我运行时phpinfo(),我看到了对 MySQL 的支持并mb_string已启用,如下所示:

mb_string

MySQL

mysqli

4

12 回答 12

47

同时安装 gd 库。

检查此链接 http://www.php.net/manual/en/mbstring.installation.php

于 2013-06-20T04:29:24.243 回答
30

有一种比重新编译 PHP 更简单的方法。只需 yum 安装所需的 mbstring 库:

示例:如何在 CentOS 6.2 上安装 PHP mbstring

yum --enablerepo=remi install php-mbstring

哦,别忘了之后重新启动apache。

于 2014-03-03T13:38:41.487 回答
9

Mbstring 是一个非默认扩展。这意味着默认情况下不启用它。您必须使用配置选项显式启用该模块。

如果您的 php 版本是 7.2:

sudo apt-get install php7.2-mbstring

sudo service apache2 restart

如果您的 php 版本是 7.0:

sudo apt-get install php7.0-mbstring

sudo service apache2 restart

如果您的 php 版本是 5.6:

sudo apt-get install php5.6-mbstring

sudo service apache2 restart
于 2018-01-03T17:02:38.127 回答
6

在 Windows 上打开文件 php.ini 并进行以下更改:

去掉注释,指向ext目录

; extension_dir = "./" -> extension_dir = "C:/Php/ext"

删除此扩展的评论

  • 扩展=php_mbstring.dll
  • 扩展=php_mysqli.dll

重启apache服务

httpd -k 重启

于 2014-08-14T06:49:42.923 回答
3

当我打开 php.ini 文件时,“extension_dir”行如下所示:

extension_dir = "C:/wamp/bin/php/php5.4.16/ext/"

我改为:

extension_dir = "C:\wamp\bin\php\php5.4.16\ext\"

它奏效了。

于 2016-01-06T14:12:31.600 回答
2

在 Windows / WAMP 下,似乎没有任何 php_mbstring.dll 依赖于 GD2 扩展、MySQL 扩展或外部 dll/libs:

deplister.exe ext\php_mbstring.dll

php5ts.dll,OK
MSVCR110.dll,OK
KERNEL32.dll,OK

deplister.exe ext\php_gd2.dll

php5ts.dll,OK
USER32.dll,OK
GDI32.dll,OK
KERNEL32.dll,OK
MSVCR110.dll,OK

无论 php_mbstring 已经需要什么,它都是内置的(静态编译到 DLL 中)。

调用未定义函数 mb_detect_encoding()

这个错误也是非常具体和确定性的......

该函数mb_detect_encoding()没有失败,因为 php_gd、php_mysql、php_mysqli 或其他扩展未加载;它根本没有找到。

我猜所有报告为有效的答案(对于 Windows / WAMP),说加载其他扩展,更改 php.iniextension_dir路径(如果这个开始错误,则不会加载任何扩展)等, 由于 a) 取消注释该extension = php_mbstring.dll行,或 b) 重新启动 Apache 或计算机(以使更改生效),工作量更大。

在 Windows 上,大多数时候问题在于 php_mbstring.dll 是:

  • 被 Windows 阻止。通过右键单击它来取消阻止它,检查属性。

  • 或者 PHP 无法加载 php_mbstring.dll,因为加载了另一个版本(例如,从一些不正确的 PHP DLL 安装到 C:\Windows\system32)、一些版本不匹配、缺少运行时 DLL 等。检查 Apache 和 PHP 的错误首先记录文件以获取线索。

更深入的答案在这里:调用未定义的函数 mb_detect_encoding

于 2014-11-20T18:51:24.207 回答
2

对于 fedora/centos/redhat:

yum install php-mbstring

然后重启apache

于 2016-02-13T01:04:25.110 回答
1

如果您使用所有语言,您应该只使用英文版的 phpmyadmin 您应该在 php.in 文件中启用所有语言 mbstring .....只需在 php.in 中搜索 mbstring

于 2013-07-24T14:51:28.637 回答
1

如果您错误地设置 PHPIniDir,问题也可能是 Apache 找不到 php.ini。我的设置为:PHPIniDir "c:/php7" 但是,该文件夹实际上只是 "php" 线索是查看 phpinfo() 显示:配置文件 (php.ini) 路径 C:\windows

于 2016-05-12T20:37:22.933 回答
1

我在 Ubuntu 17 上遇到了同样的问题,Ispconfig没有处理任何排队的操作,而且server.sh命令也不起作用。我检查了操作系统升级后正在运行的 PHP 版本是 7.1,所以解决方案是输入:

apt-get install php7.1-mbstring

现在一切正常

于 2018-03-16T20:25:47.270 回答
0

希望这对一些人有所帮助,当我在我的 php.ini 文件中添加“docref_root”“docref_ext”的路径和扩展名时出现此错误,然后我将其注释掉,没关系,但现在无法得到我的帮助。

于 2014-12-20T05:21:36.453 回答
0

如果您的 php 版本是 7.2:

sudo apt-get install php7.2-mbstring

sudo service apache2 restart
于 2021-10-24T17:33:29.777 回答