如何在 PHP 7 中启用 MySQLi 扩展?

How can I enable the MySQLi extension in PHP 7?

提问人:Mohammad Sayeed 提问时间:2/16/2016 最后编辑:Mohammad Sayeed 更新时间:3/25/2021 访问量:478016

问:

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

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

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

评论


答:

41赞 Mohammad Sayeed 2/16/2016 #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

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

评论

38赞 miken32 5/13/2016
php_mysqli.dll适用于 Windows。
1赞 Vibhu Tewary 12/8/2016
谢谢 我花了一段时间才让我的 Wordpress 安装运行,因为 mysql_* 在 php7 中被弃用了,这很有帮助!
0赞 MJA 3/23/2017
谢谢,这在 Win7 中帮助了我!还不得不取消注释指令。extension_dir
0赞 Krzysztof Grzybek 2/4/2022
对我来说是(PHP 7.4.2)ext/php_mysqli.dll
14赞 Atul Pandya 2/16/2016 #2

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

extension=php_mysqli.so

评论

6赞 motorbaby 3/7/2017
此行与 Ubuntu 16.04 不php.ini。添加它?
0赞 Peter Girnus 5/16/2018
在ubuntu0.18.04.1中也可以使用
149赞 Xeno 5/7/2016 #3

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

sudo apt-get install php-mysql

这将自动更新 Apache 和 PHP 7。

评论

17赞 scoobydoo 6/3/2016
这是 Ubuntu (16.04) 的正确答案。之后重启 apache:sudo service apache2 restart
0赞 Riz 10/13/2017
谢谢Xeno。这是 Ubuntu (16.04) 的有效答案,PHP 7.1 @scoobydoo是正确的。在此之后重新启动apache。
2赞 raphie 5/7/2019
只是一个警告......php-mysql 在几年前就被弃用了,PHP 开发人员警告说,该扩展将在 PHP 7 上被删除多年。建议改用 php-mysqli。
2赞 Oliver Williams 3/30/2021
OP 是 Ubuntu,而不是 Windows。如果扩展不存在,取消注释扩展声明将没有任何好处。 如果不是,会处理的。您可以通过创建一个仅包含并搜索apt-get install php7.3-mysqli<?php phpinfo();?>mysqli
0赞 Peter Kionga-Kamau 5/4/2022
@raphie 问题是,安装 php-mysqli 后,此错误发生在 Ubuntu 20 上(如果您列出已安装的软件包 php-mysqli 不会显示);现在的解决方法是.可能是 php-mysqli 通过 apt 包管理器出了问题:apt install php-mysql# sudo apt-get install -y php-mysqli Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'php7.4-mysql' instead of 'php-mysqli' php7.4-mysql is already the newest version (7.4.3-4ubuntu2.10). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
41赞 Pipo 12/19/2017 #4
sudo phpenmod mysqli
sudo service apache2 restart

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

评论

2赞 Haseeb Jehanzeb 5/25/2018
谢谢,这很有帮助。你能解释一下phpenmod是做什么的吗?
0赞 Robert Sinclair 1/8/2021
收到警告:模块 mysqli ini 文件在 /etc/php/7.1/mods-available 下不存在
0赞 Pipo 1/11/2021
你@RobertSinclair安装软件包的?php-mysql
1赞 Robert Sinclair 1/12/2021
@Pipo就是这样,哎呀,谢谢你!
-6赞 Kratos.vn 11/28/2018 #5

让我们使用

mysqli_connect

而不是

mysql_connect

因为在 PHP 7 中不受支持。mysql_connect

32赞 Marco Schoolenberg 8/23/2019 #6

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

sudo apt-get install php7.x-mysqli

sudo service apache2 restart

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

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

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

php -v

如果缺少 mbstring,则执行完全相同的操作:

apt-get install php7.x-mbstring

service apache2 restart

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

评论

0赞 geoidesic 12/24/2022
是的。不。不再起作用了。
0赞 Marco Schoolenberg 7/31/2023
好吧,这是 4 年前的帖子。
44赞 Speedy 6/15/2020 #7

对于所有 docker 用户,只需从 php 容器内部运行即可。docker-php-ext-install mysqli

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

评论

3赞 Uchendu 7/8/2020
有人应该如何找到那条信息?!有没有关于那个或类似的文档?
1赞 Boris Ivanov 7/13/2020
快点,我的英雄!
4赞 Speedy 7/18/2020
@Uchendu它实际上就在 PHP 容器的描述中,hub.docker.com/_/php - 在“如何安装更多 PHP 扩展”部分。我也花了相当长的时间才找到它。我已经更新了我的答案以包含此信息,谢谢。
0赞 Erik Thiart 1/27/2021
不起作用。在 Synology DSM 上使用 docker。
1赞 Peter Kionga-Kamau 5/4/2022
这听起来像是适用于特定 docker 映像的修复程序,而不是一般的 dockerized 安装
-2赞 dav 3/25/2021 #8

如果是 docker,按照上面 Speedy 的答案安装 mysqli 后,您应该按照此答案重新启动 fpm https://stackoverflow.com/a/43076457/932473docker-php-ext-install mysqli

从容器内部

kill -USR2 1