【问题标题】:PHP Fatal error when trying to access phpmyadmin mb_detect_encoding尝试访问 phpmyadmin mb_detect_encoding 时出现 PHP 致命错误
【发布时间】:2012-11-01 08:15:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • 是的,但我认为这不是 joomla 问题。 Joomla 无法连接到数据库。
  • 我决定删除服务器并重新开始,新服务器上一切正常。谢谢大家。

标签: php phpmyadmin fatal-error


【解决方案1】:

第一个错误是由 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

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

编辑: 用户补充说他在 cmets 中使用 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();

【讨论】:

  • 我打开了我的 php.ini 文件,但没有看到 mbstring.so 或 mysqli.so。我在linux上。
  • 你使用哪个 linux 发行版?
  • 我添加了这两个,但仍然没有运气
  • 在redhat上你应该可以通过这种方式安装扩展(如果你有root权限) sudo yum install php-mbstring php-mysqli
  • 已经安装了包 php-mbstring-5.4.8-1.el6.remi.x86_64 和最新版本 已经安装了包 php-mysql-5.4.8-1.el6.remi.x86_64 和最新版本无事可做
【解决方案2】:

在阅读了有关 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 浏览器。

系统规格: 视窗 7 HB 64 位 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

希望对您有所帮助。也感谢您的 cmets。

【讨论】:

    【解决方案3】:

    在 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 版本中测试

    【讨论】:

    • 应该是comment 而不是answer。阅读here how to answer :)
    • 这为我在 Ubuntu Server 16.04 上解决了一个问题。谢谢迪米特里斯。
    • 这对我有用!之前在 php.ini 中打开了 display_errors,这让我可以看到这篇文章。
    【解决方案4】:

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

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

    【讨论】:

    • 我跑了 phpinfo。我应该寻找什么?
    • 或者缺少它。在这种情况下,这意味着您必须安装它们。
    • 在配置命令中,我有:mysql=shared,/usr''--with-mysqli=shared,/usr/lib64/mysql/mysql_config''--... .ini 文件解析部分我有 ql.ini、/etc/php.d/mysqli.ini、/etc/php.d/oci8.in 和其他 .ini 文件解析部分我有 .d/json.ini, /etc/php.d/mbstring.ini, /etc/php.d/mcrypt
    • 我很确定 mbstring 已安装,因为 yum install php-mbstring 并表示已安装
    • 之后你重启过php吗?
    【解决方案5】:

    我的 windows7-32 位也有同样的问题:

    1.“PHP 致命错误:在 /usr/share/php/gettext/gettext.inc 第 177 行调用未定义函数 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\"
    

    它成功了。

    【讨论】:

    • 这个答案对我有帮助。
    • 也帮助了这个。
    【解决方案6】:

    php.ini,我不得不改变

    extension_dir = "ext"
    

    extension_dir = "C:/PHP/ext"
    

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

    同时取消注释 mbstringsmysqlimysql 扩展。

    【讨论】:

    • 从这些扩展 extension=php_mbstring.dllextension=php_mysqli.dllextension=php_gettext.dll 中删除注释 (;)
    【解决方案7】:

    帮助我(在 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)

    【讨论】:

      【解决方案8】:

      用 mbstring 重新编译 PHP。

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

      make 
      
      make install
      

      【讨论】:

      • 它的 --enable-mbstring
      【解决方案9】:

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

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

      【讨论】:

      • 还指的是 Koen 对 php.ini 文件中 mbstring 的回答 dido。 php_mbstring.dll
      【解决方案10】:

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

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

      【讨论】:

      • 在发布一般 PHP 错误时认为有人在使用 joomla 是一种假设。
      • 与其让 OP 降级为古老的 API,不如让 OP 安装 mysqli(如果这确实是 OP 的问题)。
      • extension = php_mysqli.dll 你的 php.ini 文件中有这个
      • @RadikCH 我的 php.ini 文件中没有扩展名 = php_mysqli
      • 如果没有,添加 extension = php_mysqli.dll 这个到 php.ini
      【解决方案11】:

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

      extension=mysqli.dll 
      extension=mbstring.dl
      

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

      extension_dir = "ext"
      

      phpMyadmin 正在工作!

      【讨论】:

        【解决方案12】:

        在 windows 2008 服务器中。

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

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

        【讨论】:

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

          【讨论】:

            【解决方案14】:

            一个选项是: 禁用了这个 extension_dir = "ext"

            另一个是:

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

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

            【讨论】:

              【解决方案15】:

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

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-02-04
                • 1970-01-01
                • 2017-09-28
                • 2022-08-07
                • 1970-01-01
                • 2016-06-14
                • 2017-03-24
                • 1970-01-01
                相关资源
                最近更新 更多