【问题标题】:Fatal error: Call to undefined function mysqli_connect()致命错误:调用未定义函数 mysqli_connect()
【发布时间】:2019-09-24 01:15:20
【问题描述】:

2 天来,我正在尝试解决这个问题,但不幸的是没有结果。让我告诉你我关于这个问题的故事。我在网站上构建了一个应用程序,该应用程序处理评论。但是,我试图把它放在另一个站点上,我从旧站点复制了 php 文件和 sql 文件,并将它们移动到新站点(它们位于不同的 FTP 服务器上)。当我尝试从应用程序访问页面时,我收到此 FATAL ERROR:

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

我编写的用于连接数据库的代码是这样的(带有隐藏凭据):

$con = mysqli_connect("","*the_name*","*the_pass*","*the_database*");
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

为什么我会收到错误消息?它可以在旧服务器上运行,我认为代码不是问题,因为它可以在 localhost 上运行,而在新服务器上则不行。谁能帮帮我?

【问题讨论】:

标签: php mysqli


【解决方案1】:

简单地做

sudo apt install php-mysqli

完美运行,并且与版本无关

【讨论】:

  • 它的工作原理在我的情况下,我必须运行 sudo apt-get install php5.6-mysql 然后重新启动 apache sudo service apache2 restart
  • @ScottyBlades 仅尝试sudo apt。我进行了相应的编辑
  • 像魅力一样工作!
  • 在 Lubuntu 21.04 和 PHP 7.4 上与我合作
【解决方案2】:

如果您自己托管服务器,请在 php.ini 文件中删除扩展名前面的分号 extension=php_mysqli.dll

【讨论】:

  • 另外,请始终检查您的 PHP 和 Apache 错误日志。我用“#”代替“;”在 php.ini 中标记注释并从网页得到奇怪的错误(包括“调用未定义的函数 mysqli_connect()”)。
  • extension=mysqli
【解决方案3】:

对于CentOS,执行:

sudo yum install php-mysqli

【讨论】:

  • 没有包 php-mysqli 可用。 CentOS 6.9 版(最终版)。我该怎么办?
  • 是的,我也收到了同样的消息“没有可用的包 php-mysqli”,怎么办?
  • 我建议在 Centos 7 上使用 IUS repo for php 5.6。阅读ius.io的文档
【解决方案4】:

在 Ubuntu 上我必须安装 php5 mysql 扩展:

apt-get install php5-mysql

【讨论】:

  • 此外,如果您使用的是 Ubuntu/Debian,请检查“/etc/php5/apache2/php.ini”文件中的扩展“extension=mysqli.so”是否已启用(未注释)。然后重启服务器“service apache2 restart”。
  • 这不适用于 Ubuntue E: Package 'php5-mysql' has no installation candidate
【解决方案5】:

默认情况下不使用 php 扩展时发生。在您的 php.ini 文件中,将
;extension=php_mysql.dll
更改为
extension=php_mysql.dll

**如果记录此错误,则添加此 dll 文件的路径,例如
extension=C:\Php\php-???-nts-Win32-VC11-x86\ext\php_mysql.dll

php_mysqli.dllphp_pdo_mysql.dll 执行相同操作。保存并再次运行您的代码。

【讨论】:

  • 同时重启 Apache。
【解决方案6】:

如果您安装了模块并正确设置了 PHP.INI 文件,请检查您的 apache 错误日志中是否有以下内容:

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mysqli.dll' - The specified module could not be found.

在这种情况下,您的扩展目录并不是您想象的那样。您可能需要明确设置它,如下所示:

extension_dir="C:\xampp\php\ext"

【讨论】:

    【解决方案7】:

    我在 centos7 上的 php7 有点不同。

    在 /etc/php.ini 中

    ;扩展=mysqli

    extension=mysqli

    【讨论】:

    • 类似change 用于archlinux,在/etc/php/php.ini 中取消注释。
    【解决方案8】:

    如果您自己托管服务器,并且该服务器恰好是 Apache,即使您在 php.ini 中取消注释 extension=php_mysqli.dll,您也会收到此错误。

    您还需要使用 Apache 的 httpd.conf 中的 PHPIniDir 指令告诉 Apache 在哪里可以找到 php.ini

    AddHandler application/x-httpd-php .php
    PHPIniDir "<path-to-folder-where-php-ini-lives>"
    

    【讨论】:

      【解决方案9】:

      在 Raspberry Pi 上,我必须安装 php5 mysql 扩展。

      apt-get install php5-mysql
      

      安装客户端后,应重新启动网络服务器。如果您使用的是 apache,以下应该可以工作:

      sudo service apache2 restart
      

      【讨论】:

        【解决方案10】:

        如果您使用 ubuntu 16.04(可能及更高版本),您已经拥有此模块,但默认情况下未启用。只需这样做:

        sudo phpenmod mysqli
        

        【讨论】:

        • 嗯,这给了我一些新信息......但它似乎没有默认安装在 WSL Ubuntu 18 上......'警告:模块 mysqli ini 文件在 /etc/ 下不存在php/7.2/mods-available'
        • 如果sudo apt-get install php7.2-mysqli缺少可以安装
        【解决方案11】:

        没有错误,但是你的机器上没有安装mysqli PHP扩展。请联系您的服务提供商以解决此问题。

        【讨论】:

          【解决方案12】:

          Mysqli 未安装在新服务器上。运行 phpinfo() 确认。

          <?php 
          
          phpinfo();
          

          【讨论】:

            【解决方案13】:

            所以这对你来说可能不是问题,但我一直在努力解决这个错误。我发现了导致我的问题的原因,但我无法真正解释原因。

            对我来说,mysqli_connect 在任何不同子目录的页面上都可以正常工作。但是由于某种原因,在根目录中的页面上引用的相同代码返回了此错误。奇怪的是,它在根目录中 MAMP 的本地主机环境中运行良好,但在我的共享主机上却没有。

            在努力从这个“PHP 致命错误”中找出是什么给了我“错误 500”白屏之后,我浏览了代码并在 PHP 手册 (@987654321) 建议的错误处理中偶然发现了这段代码@)。

            if (!mysqli_query($link, "SET a=1")) {
                printf("Error message: %s\n", mysqli_error($link));
            }
            

            我随机决定删除它,瞧,连接到在根目录中工作的数据库。也许比我更聪明的人可以为任何遇到类似问题的人解释这一点。

            【讨论】:

              【解决方案14】:

              我按照下面的链接来解决这个问题。确保启用以下模块。
              php -r 'phpinfo();' | grep -i mysqli
              链接:https://askubuntu.com/questions/773601/php-mysqli-extension-in-ubuntu-16-04-not-working-after-upgrade-to-version-7-0-6

              【讨论】:

                猜你喜欢
                • 2017-01-25
                • 2013-11-12
                相关资源
                最近更新 更多