19

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

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

尝试访问该站点时,出现此错误,我认为这两个错误很可能是相关的:

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

4

15 回答 15

27

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

第二个错误是 phpMyAdmin/your site 的输出,要求您安装/启用 mysqli 扩展。

要启用 mbstring 和 mysqli,请编辑您的 php.ini 并在 unix 上使用 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 安装的所有设置、版本和活动扩展

测试.php

<?php
phpinfo();
于 2012-11-12T21:24:53.173 回答
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 服务器和 Internet 浏览器,现在 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-installer-community- 5.6.11.0.msi

希望这有帮助。谢谢你的评论。

于 2013-07-05T04:42:46.327 回答
10

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

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

对于 mysql 支持安装

sudo apt-get install php7.0-mysql

在 ubuntu 16.04 和 php 7 版本中测试

于 2016-05-01T15:42:03.727 回答
3

看起来您的 PHP 安装没有安装mbstring 扩展mysqli 适配器扩展

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

于 2012-11-12T21:17:04.040 回答
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\"

它奏效了。

于 2013-10-24T09:30:29.793 回答
2

php.ini,我不得不改变

extension_dir = "ext"

extension_dir = "C:/PHP/ext"

因为我的 PHP 安装在C:\PHP. 我不得不使用,/而不是\,然后它工作。

也取消注释和mbstrings扩展。mysqlimysql

于 2014-05-15T04:37:57.273 回答
1

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

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

用 mbstring 重新编译 PHP。

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

make 

make install
于 2014-09-25T06:36:22.237 回答
0

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

./configure --with-mysql=/usr/bin/mysql_config  \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
于 2012-11-12T21:19:58.807 回答
0

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

extension=mysqli.dll 
extension=mbstring.dl

您还应该在 ini 文件中启用以下功能:

extension_dir = "ext"

phpMyadmin 正在工作!

于 2013-05-26T03:09:20.363 回答
0

一种选择是:禁用此 extension_dir = "ext"

另一个是:

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

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

于 2014-12-11T05:53:15.447 回答
0

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

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

如果是,那么您可以重新加载您的 PHP 版本,方法是单击 wampserver 图标,然后单击 PHP,然后单击版本,然后单击您的版本。等待一切再次上线,然后尝试访问 phpmyadmin。

于 2015-03-02T00:40:52.510 回答
0
  1. 某些版本的 Windows 不附带加载 mysql 和 mysqli 扩展所必需的 libmysql.dll。检查它是否在C:/Windows/System32(Windows 7、32 位)中可用。如果没有,您可以下载DLL-files.com并将其安装在 C:/Windows/System32 下。
  2. 如果这种情况仍然存在,请检查您的 apache 日志文件并使用上述解决方案来响应您的服务器记录的错误。
于 2014-04-06T23:33:19.123 回答
0

在 Windows 2008 服务器中。

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

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

于 2013-06-21T23:14:34.403 回答
0

我的猜测是检查您的 PHP 配置中是否启用了 mysqli 扩展。更多信息会很棒(例如操作系统、AMP 堆栈等)。

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

于 2012-11-12T21:22:51.683 回答