我已经在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的软件包已被弃用(php5-mysql(。如果安装新软件包,
sudo apt-get install php-mysql
这将自动更新 Apache 和 PHP 7。
对于所有 docker 用户,只需从 php 容器内部运行docker-php-ext-install mysqli
即可。
更新:有关 https://hub.docker.com/_/php 的更多信息,请参阅"如何安装更多 PHP 扩展"部分。
我得到了解决方案。我能够在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 中处于禁用状态。
sudo phpenmod mysqli
sudo service apache2 restart
-
phpenmod moduleName
使模块达到 PHP 7(sudo service apache2 restart
后重新启动 Apache( -
phpdismod moduleName
禁用 PHP 7 的模块(sudo service apache2 restart
后重新启动 Apache( -
php -m
列出加载的模块
在 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执行此操作。
在 Ubuntu 中,你需要在文件 php 中取消注释这一行.ini该文件位于/etc/php/7.0/apache2/php.ini:
extension=php_mysqli.so
如果按照docker-php-ext-install mysqli
上面的 Speedy 的答案安装 mysqli 后使用 docker,您应该按照这个答案重新启动 fpm https://stackoverflow.com/a/43076457/932473
从容器内
kill -USR2 1
让我们使用
mysqli_connect
而不是
mysql_connect
因为 PHP 7 不支持mysql_connect
。