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

时间:2013-06-20 02:36:17

标签: php mbstring

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

  

致命错误:调用未定义的函数mb_detect_encoding()   C:\ Web服务器\阿帕奇\ htdocs中\的phpmyadmin \库\ PHP-gettext的\ gettext.inc   在第177行

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

当我运行phpinfo()时,我发现对MySQL和mb_string的支持已启用,如下所示:

mb_string

MySQL

mysqli

11 个答案:

答案 0 :(得分:40)

也安装gd库。

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

答案 1 :(得分:28)

比重新编译PHP更容易。只需安装所需的mbstring库:

示例:How to install PHP mbstring on CentOS 6.2

yum --enablerepo=remi install php-mbstring

哦,不要忘记之后重启apache。

答案 2 :(得分:8)

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

如果你的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

答案 3 :(得分:6)

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

删除评论并指向ext目录

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

删除此扩展程序的评论

  • extension = php_mbstring.dll
  • 延长= php_mysqli.dll

重启apache服务

httpd -k restart

答案 4 :(得分: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\"

并且有效。

答案 5 :(得分:2)

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

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路径(如果这个路径错误的话)开头,没有扩展会加载)等,由于a)取消注释extension = php_mbstring.dll行,或b)重新启动Apache或计算机(更改生效),工作更多。

在Windows上,大多数情况下问题是php_mbstring.dll是:

  • 被Windows阻止。通过右键单击取消阻止它,选中属性。

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

更深入的答案:Call to undefined function mb_detect_encoding

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

我遇到了与Ubuntu 17相同的问题,src/Repository没有处理任何类型的排队操作,Ispconfig命令也无效。 我检查并在操作系统升级后运行的PHP版本为7.1,因此解决方案是键入:

server.sh

现在一切都好了

答案 9 :(得分:0)

希望这有助于某些人,当我将路径和扩展名添加到" docref_root"时,我收到此错误" docref_ext"在我的php.ini文件中,我随后将其评论出来并且没关系,但现在无法帮我工作。

答案 10 :(得分:0)

对于fedora:

yum install php-mbstring

然后重启apache