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

Php 致命错误:调用未定义的函数mb_detect_encoding(),php,mbstring,Php,Mbstring,我在尝试通过以下方式设置LAMP后收到此错误,并且在尝试设置phpmyadmin后发现自己收到上述错误 致命错误:在中调用未定义的函数mb_detect_encoding() C:\WebServer\Apache\htdocs\phpmyadmin\libraries\php gettext\gettext.inc 在线177 我按照这里的建议做了这些改变 当我运行phpinfo()时,我看到对MySQL和mb_string的支持已启用,如下所示: 同时安装gd库 检查此链接 如果您使用的

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

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

我按照这里的建议做了这些改变

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


同时安装gd库

检查此链接

如果您使用的是所有语言,您应该只使用英文版的phpmyadmin。您应该在php.in文件中启用所有语言mbstring…..只需在php中搜索mbstring。在中,有一种比重新编译php更简单的方法。只需yum安装所需的mbstring库:

例如:


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

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

删除注释并指向ext目录

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

删除此扩展的注释

  • extension=php_mbstring.dll
  • extension=php_mysqli.dll
重新启动apache服务


httpd-k restart

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

deplister.exe ext\php\u mbstring.dll

php5ts.dll,OK
MSVCR110.dll,OK
KERNEL32.dll,OK
php5ts.dll,OK
USER32.dll,OK
GDI32.dll,OK
KERNEL32.dll,OK
MSVCR110.dll,OK
deplister.exe ext\php_gd2.dll

php5ts.dll,OK
MSVCR110.dll,OK
KERNEL32.dll,OK
php5ts.dll,OK
USER32.dll,OK
GDI32.dll,OK
KERNEL32.dll,OK
MSVCR110.dll,OK
无论php_mbstring已经需要什么,它都是内置的(静态编译到DLL中)

调用未定义函数mb_detect_encoding()

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

函数
mb\u detect\u encoding()
没有失败,因为没有加载php\u gd、php\u mysql、php\u mysqli或其他扩展;根本没有找到

我猜所有被报告为有效的答案(对于Windows/WAMP),比如加载其他扩展,更改php.ini
extension\u dir
路径(如果这个一开始是错误的,就不会加载任何扩展),等等,由于a)取消注释
extension=php\u mbstring.dll
行,或者b)重新启动Apache或计算机(以使更改生效)

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

  • 被窗口阻止。通过右键单击取消阻止,检查属性

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


这里有更深入的回答:

希望这对ppl有所帮助,当我在php.ini文件中添加“docref_root”“docref_ext”的路径和扩展名时,我遇到了这个错误,然后我对它进行了注释,它还可以,但现在无法得到我的帮助。

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

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

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

它起了作用。

对于fedora/centos/redhat:

yum安装php mbstring


然后重新启动apache

问题还可能是apache找不到php.ini 如果PHPIniDir设置不正确。 我的设置为:PHPIniDir“c:/php7” 但是,文件夹实际上只是“php” 线索是查看phpinfo() 这表明:
配置文件(php.ini)路径C:\windows

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

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

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

apt-get install php7.1-mbstring

现在一切都好了吗

你的php版本是什么?你需要什么样的
gd
库?在获得phpMyAdmin的白色主页后,它也在openSuse 13.1中工作:`yast-i php mbstring`如果你的系统上安装了多个版本,你可能需要安装特定版本的库,例如,使用
sudo apt install php5.6-mbstring
。同时删除注释(;)通过这些扩展和
extension=php_mysql.dll
extension=php_gettext.dll
或者,您可以从Windows中的
服务启动
APACHE
sudo-yum-install-php72-mbstring