尝试访问phpmyadmin mb_detect_encoding时出现PHP致命错误

时间:2012-11-12 21:12:39

标签: php phpmyadmin fatal-error

不确定发生了什么,但下面是日志在尝试访问phpmyadmin时给我的内容,请帮忙。试图调试一个不同的问题,并遇到这个问题。真的不可能恢复到工作的时候。

  

PHP致命错误:调用未定义的函数mb_detect_encoding()       第177行/usr/share/php/gettext/gettext.inc

当试图访问该网站时,我收到此错误,我认为这两个错误很可能是相关的:

  

数据库连接错误(1):MySQL适配器'mysqli'不可用。

15 个答案:

答案 0 :(得分:26)

第一个错误是由php引起的,因为扩展名mbstring未安装或未激活。

第二个错误是phpMyAdmin /您的网站输出,要求您安装/启用mysqli扩展程序。

启用mbstring和mysqli编辑你的php.ini并添加/取消注释unbs上的mbstring.so和mysqli.so以及windows上的mbstring.dll和mysqli.dll

Unix / etc /(phpX /)php.ini

extension=mysqli.so
extension=mbstring.so

Windows PHP安装文件夹\ etc \ php.ini

extension=mysqli.dll
extension=mbstring.dll

请不要忘记在此之后重新启动您的网络服务器。

编辑: 用户补充说他在评论中使用了redhat,所以这里是你如何在所有基于CentOS / Fedora / RedHat / Yum的Linux发行版上安装扩展程序

sudo yum install php-mysqli
sudo yum install php-mbstring

restart your werbserver
sudo /etc/init.d/httpd restart

您可以在文档根目录中使用一个小PHP脚本验证您的安装。 这列出了您为php安装的所有设置,版本和活动扩展

test.php的

<?php
phpinfo();

答案 1 :(得分:10)

在阅读了关于extension_dir =“ext”之后,我将这行添加到php.ini但没有工作,然后开始查看apache错误日志,看到PHP实际上无法在指定目录“ext”中找到dll 。我评论了extension_dir行,重新启动了Apache并再次查看了错误日志,看到PHP现在正在C:/ PHP / ext中查看dll(默认情况下我猜),但是由于我使用其他文件夹,这不是正确的路径,所以我取消注释了extension_dir行并写了这个:

extension_dir = "C:/Apache24/PHP/ext" 

在我的配置中,这是dll的正确路径。

当然,没有注释:

extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll

重新启动Apache服务器和互联网浏览器,现在phpMyAdmin可以使用mySQL登录。

所以,dll的错误路径和需要在php.ini中注释的dll是问题所在。

请记住在编辑配置文件后重新启动Apache和Internet浏览器。

系统规格: Windows 7 HB 64bit httpd-2.4.4-win32-ssl_0.9.8.zip php-5.4.16-Win32-VC9-x86.zip phpMyAdmin-4.0.4.1-all-languages.zip MySQL的安装程序-社区5.6.11.0.msi

希望这有帮助。感谢您的评论。

答案 2 :(得分:9)

在ubuntu 16.04当我试图连接到phpmyadmin时出现了一个白色空白分页,所以我运行了上面的命令和phpmyadmin工作

sudo apt-get install php-mbstring php7.0-mbstring php-gettext

用于mysql支持安装

sudo apt-get install php7.0-mysql

使用php 7版本在ubuntu 16.04中测试

答案 3 :(得分:3)

您的PHP安装似乎没有安装mbstring extensionmysqli adapter extension

请检查您的phpinfo();或在终端中运行php -i | grep 'mbstring\|mysqli'

答案 4 :(得分:3)

我在windows7-32位上遇到了同样的问题:

  

1.“PHP致命错误:在第177行的/usr/share/php/gettext/gettext.inc中调用未定义的函数mb_detect_encoding()”

当我打开我的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)

php.ini,我不得不改变

extension_dir = "ext"

extension_dir = "C:/PHP/ext"

因为我的PHP安装在C:\PHP中。我不得不使用/而不是\,然后才有效。

同时取消注释mbstringsmysqlimysql个扩展程序。

答案 6 :(得分:1)

帮助我(在Windows上使用XAMPP)的原因是:

  • 确保我的路径包含PHP的正确路径(我有两个PHP 安装,c:\php下的安装和XAMPP安装 c:\xampp\php这是我想要使用的那个)
  • 检查线路
    extension_dir="C:\xampp\php\ext"已在php.ini文件中取消注释extension=php_mbstring.dll
    extension=php_exif.dll ; Must be after mbstring as it depends on it((即开头没有;
  • 重启Apache服务器
  • 最后但同样重要的是,在重新加载页面http://localhost/phpmyadmin/时清除缓存(例如在Chrome中使用Ctrl-F5)

答案 7 :(得分:1)

使用mbstring重新编译PHP。

./configure --enable-http --with-apxs2 --with-mysql --with-gd --with-curl --with-mbstring

make 

make install

答案 8 :(得分:0)

尝试install mysqli和pdo。 把它放在终端:

./configure --with-mysql=/usr/bin/mysql_config  \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd

答案 9 :(得分:0)

我的猜测是检查你的PHP配置中是否启用了mysqli扩展。更多信息会很棒(例如OS,AMP堆栈等)。

检查你的php.ini配置中的mysqli并确保没有';'在扩展名前面。在我的设置上启用的是php_mysqli_libmysql.dll。

答案 10 :(得分:0)

我在Windows上尝试过,在PHP installation folder\etc\php.ini中启用此功能后,我遇到了同样的问题:

extension=mysqli.dll 
extension=mbstring.dl

您还应该在ini文件中启用以下内容:

extension_dir = "ext"

phpMyadmin现在正在使用!

答案 11 :(得分:0)

在Windows 2008 Server中。

我删除了“;”在php.ini文件中的extension = php_mbstring.dll前面,它工作了......我按照下面的链接...

https://bugs.php.net/bug.php?id=64965

答案 12 :(得分:0)

  1. 某些版本的Windows没有附带libmysql.dll,这是加载mysql和mysqli扩展所必需的。检查它是否在C:/Windows/System32中可用(Windows 7,32位)。如果没有,您可以下载它DLL-files.com并将其安装在C:/ Windows / System32下。
  2. 如果仍然存在,请检查您的apache日志文件,并使用上面的解决方案来响应服务器记录的错误。

答案 13 :(得分:0)

一个选择是: 禁用此extension_dir =“ext”

另一个是:

转到wamp图标并查看php并点击php错误日志,然后从错误日志中找到确切的错误。

仅在未正确设置路径时才会出现此错误。

答案 14 :(得分:0)

我遇到了同样的麻烦,这对我有用。

您可以单击wampserver图标,然后单击PHP错误日志。 检查是否这样说: Unable to load dynamic library 'c:/wamp/bin/php/php5.5.12/ext/php_ldap.dll'

如果是,那么您可以重新加载您的PHP版本,方法是单击wampserver图标,然后单击PHP,然后单击版本,然后单击您的版本。 等待所有内容再次联机,然后尝试访问phpmyadmin。