致命错误:调用未定义函数 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()
时,我看到对mysql 和mb_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.dll
和extension=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()
PHP 致命错误:调用未定义的函数 imagecreatefrompng()