【问题标题】:How can I enable the MySQLi extension in PHP 7?如何在 PHP 7 中启用 MySQLi 扩展?
【发布时间】:2016-05-27 06:50:16
【问题描述】:

我已经在 Ubuntu 14.04 (Trusty Tahr) 上安装了 PHP 7 和 MySQL 5.5.47。

我使用以下方法检查了已安装的扩展程序:

sudo apt-cache search php7-*

它输出:

php7.0-common - Common files for packages built from the PHP source
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.0-dev - Files for PHP7.0 module development
php7.0-dbg - Debug symbols for PHP7.0
php7.0-curl - CURL module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-readline - readline module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-pspell - pspell module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
php7.0-xsl - XSL module for PHP
php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-json - JSON module for PHP
php-all-dev - package depending on all supported PHP development packages
php7.0-sybase - Sybase module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-opcache - Zend OpCache module for PHP
php7.0-bz2 - bzip2 module for PHP

我也无法使用 phpinfo() 查看 MySQLi 扩展。如何在 PHP 7 中启用/安装 MySQLi 扩展?

这就是为什么我不能使用 phpMyAdmin。它说“缺少 mysqli 扩展。”

【问题讨论】:

    标签: php mysql mysqli php-7


    【解决方案1】:

    我得到了解决方案。我能够在 php.ini 中启用 MySQLi 扩展。我只是在 php.ini 中取消了对这一行的注释:

    extension=php_mysqli.dll
    

    现在 MySQLi 运行良好。这是 Apache 2、PHP 7 和 Ubuntu 14.04 环境中的 php.ini 文件路径:

    /etc/php/7.0/apache2/php.ini
    

    默认情况下,PHP 7 中禁用 MySQLi 扩展。

    【讨论】:

    • php_mysqli.dll 适用于 Windows。
    • 谢谢 我花了一段时间才让我的 Wordpress 安装运行,因为 mysql_* 在 php7 中已被弃用,这有帮助!
    • 谢谢,这在 Win7 中帮助了我!还必须取消注释 extension_dir 指令。
    【解决方案2】:

    在 Ubuntu 中,您需要在位于 /etc/php/7.0/apache2/php.ini 的文件 php.ini 中取消注释这一行: p>

    extension=php_mysqli.so
    

    【讨论】:

    • 这一行不在 Ubuntu 16.04 的 php.ini 中。添加它?
    • 在 ubuntu0.18.04.1 中也能正常工作
    【解决方案3】:

    问题是用于将 PHP 连接到 MySQL 的软件包已弃用(php5-mysql)。如果您安装新软件包,

    sudo apt-get install php-mysql
    

    这将自动更新 Apache 和 PHP 7。

    【讨论】:

    • 这是 Ubuntu (16.04) 的正确答案。之后重启apache:sudo service apache2 restart
    • 感谢 Xeno。这是 Ubuntu (16.04) 的有效答案,PHP 7.1 @scoobydoo 是正确的。在此之后重新启动 apache。
    • 作为一个警告... php-mysql 多年前已被弃用,PHP 开发人员警告说,该扩展将在 PHP 7 上被删除多年。建议改用php-mysqli。
    • OP 是 Ubuntu,而不是 Windows。如果扩展不存在,取消注释扩展声明不会有任何好处。如果不是,apt-get install php7.3-mysqli 会处理这个问题。您可以通过创建仅包含 <?php phpinfo();?> 的 Web 文件并搜索 mysqli 来查找
    【解决方案4】:
    sudo phpenmod mysqli
    sudo service apache2 restart
    

    • phpenmod moduleName 启用 PHP 7 的模块(之后重新启动 Apache sudo service apache2 restart)
    • phpdismod moduleName 禁用 PHP 7 的模块(之后重新启动 Apache sudo service apache2 restart)
    • php -m 列出加载的模块

    【讨论】:

    • 谢谢,有帮助。你能解释一下 phpenmod 是做什么的吗?
    • 收到警告:/etc/php/7.1/mods-available 下不存在模块 mysqli ini 文件
    • @RobertSinclair 你安装了php-mysql 包吗?
    • @Pipo 原来是这样,好的,谢谢!
    【解决方案5】:

    让我们使用

    mysqli_connect
    

    而不是

    mysql_connect
    

    因为 PHP 7 不支持 mysql_connect。

    【讨论】:

      【解决方案6】:

      在 Ubuntu 上,当缺少 mysqli 时,执行以下命令,

      sudo apt-get install php7.x-mysqli
      
      sudo service apache2 restart
      

      将 7.x 替换为您的 PHP 版本。

      注意:这可能是 7.0 及更高版本,但例如 Drupal 出于安全考虑等原因推荐 PHP 7.2。

      要检查您的 PHP 版本,请在命令行输入:

      php -v
      

      如果你缺少 mbstring,你会做同样的事情:

      apt-get install php7.x-mbstring
      
      service apache2 restart
      

      我最近在Ubuntu 16.04 (Xenial Xerus) 上将 PHP 从 7.0 升级到 7.2 时,不得不为 phpMyAdmin 执行此操作。

      【讨论】:

        【解决方案7】:

        对于所有 docker 用户,只需在您的 php 容器内运行 docker-php-ext-install mysqli。

        更新:“如何安装更多 PHP 扩展”部分中有关 https://hub.docker.com/_/php 的更多信息。

        【讨论】:

        • 有人应该如何找到那条信息?!是否有相关文档或类似文档?
        • 快点你我的英雄!
        • @Uchendu 它实际上在 PHP 容器的描述中 hub.docker.com/_/php - 在“如何安装更多 PHP 扩展”部分。我也花了很长时间才找到它。我已更新我的答案以包含此信息,谢谢。
        • 不起作用。在 Synology DSM 上使用 docker。
        • @ErikThiart 您是否使用上面链接中的官方 php 容器?另外,什么不起作用?该命令不存在或返回错误或未安装软件包?请提供更多详细信息。
        【解决方案8】:

        如果按照Speedy's answer abovedocker-php-ext-install mysqli 安装mysqli 后出现docker,您应该按照这个答案https://stackoverflow.com/a/43076457/932473 重新启动fpm

        从容器内部

        kill -USR2 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-11
          • 1970-01-01
          • 2011-04-29
          • 2016-11-04
          • 2013-08-30
          相关资源
          最近更新 更多