首页 文章

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

提问于
浏览
42

我尝试通过以下this tutorial尝试设置LAMP后收到此错误,并且在尝试设置phpmyadmin后发现自己收到了上述错误 .

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

我按照这里的建议:PHP Fatal error when trying to access phpmyadmin mb_detect_encoding,并进行了这些修改 .

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

mb_string

MySQL

mysqli

11 回答

  • 28
  • 1

    有一种比重新编译PHP更容易的方法 . 只是yum安装所需的mbstring库:

    示例:How to install PHP mbstring on CentOS 6.2

    yum --enablerepo=remi install php-mbstring
    

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

  • 2

    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
    
  • 1

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

    删除注释并指向ext目录

    ; extension_dir =“./” - > extension_dir =“C:/ Php / ext”

    删除此扩展的评论

    • extension = php_mbstring.dll

    • extension = php_mysqli.dll

    重启apache服务

    httpd -k restart

  • 0

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

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

    • 被Windows阻止 . 通过右键单击它来取消阻止,然后选中“属性” .

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

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

  • 0

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

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

    我改为:

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

    它工作 .

  • 6

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

  • 8

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

  • 39

    希望这有助于一些ppl,当我在我的php.ini文件中添加路径和扩展名为“docref_root”“docref_ext”时出现此错误,然后我将其评论出来并且没关系,但现在无法帮我工作 .

  • 2

    对于fedora:

    yum install php-mbstring

    然后重启apache

  • -1

    我遇到了与Ubuntu 17相同的问题, Ispconfig 没有处理任何类型的排队操作,并且 server.sh 命令也无法正常工作 . 我检查并在操作系统升级后运行的PHP版本是7.1所以解决方案是键入:

    apt-get install php7.1-mbstring
    

    现在一切都好

相关问题