致命错误:调用未定义函数 mb_detect_encoding()

Posted

技术标签:

【中文标题】致命错误:调用未定义函数 mb_detect_encoding()【英文标题】:Fatal error: Call to undefined function mb_detect_encoding() 【发布时间】:2013-06-16 18:23:57 【问题描述】:

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

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

我遵循了这里的建议:PHP Fatal error when trying to access phpmyadmin mb_detect_encoding,并进行了这些更改。

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

【问题讨论】:

你的 php 版本是什么 看起来你还需要 gd 【参考方案1】:

同时安装 gd 库。

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

【讨论】:

sudo apt-get install php7.0-mbstring && sudo service apache2 restart 为我工作 确保为您的 php.ini 安装正确的版本。我以某种方式设法安装了 php-mbstring 而不是 php72-mbstring。所以在我的情况下,修复是sudo yum install php72-mbstring【参考方案2】:

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

【讨论】:

【参考方案3】:

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

示例:How to install PHP mbstring on CentOS 6.2

yum --enablerepo=remi install php-mbstring

哦,之后别忘了重启 apache。

【讨论】:

在获得 phpMyAdmin 的白色主页后,这也适用于 openSuse 13.1:`yast -i php-mbstring` 如果您的系统上安装了多个版本,您可能需要安装特定于版本的库,例如sudo apt install php5.6-mbstring.【参考方案4】:

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

去掉注释,指向ext目录

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

删除此扩展的评论

extension=php_mbstring.dll extension=php_mysqli.dll

重启apache服务

httpd -k 重启

【讨论】:

同时从这些扩展和extension=php_mysql.dllextension=php_gettext.dll中删除注释(;) 或者你可以从SERVICE in Windows开始APACHE【参考方案5】:

在 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.ini extension_dir 路径(如果这个开始是错误的,NO扩展会加载)等,工作更多,因为 a)取消注释 extension = php_mbstring.dll 行,或 b)重新启动 Apache 或计算机(以使更改生效)。

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

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

1234563 .首先检查Apache和PHP的错误日志文件寻找线索。

更深入的回答在这里:Call to undefined function mb_detect_encoding

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

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

我改成了:

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

它成功了。

【讨论】:

【参考方案8】:

对于fedora/centos/redhat:

yum install php-mbstring

然后重启apache

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

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

apt-get install php7.1-mbstring

现在一切正常

【讨论】:

【参考方案12】:

如果你的 php 版本是 7.2:

sudo apt-get install php7.2-mbstring

sudo service apache2 restart

【讨论】:

以上是关于致命错误:调用未定义函数 mb_detect_encoding()的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获的错误:调用 C:\xampp\htdocs\ 中未定义的函数 mysql_connect()

致命错误:在 php 中调用未定义函数 fetch_assoc()

致命错误:调用未定义的函数 site_url()

PHP 致命错误:调用未定义的函数 imagecreatefrompng()

致命错误:调用未定义的函数 imagewebp() [关闭]

PHPmyadmin 问题 - 致命错误:未捕获错误:调用未定义函数 mb_detect_encoding()