PHP7 安装 mysqli 扩展完整教程
在新配服务器时发现,PHP 无法连接到 MySQL。通过 phpinfo 发现没有显示 mysqli 的相关配置。这通常是因为安装 PHP 时未正确配置 mysqli 参数或未加载对应扩展。本文将提供两种解决方案:直接编译安装和单独编译扩展,帮助用户快速恢复数据库连接能力。
排查与解决思路
当 phpinfo() 页面中缺失 mysqli 信息时,主要原因在于 PHP 编译阶段未包含 mysqlnd (MySQL Native Driver) 或 libmysqlclient 的支持。在 Linux 环境下(如 CentOS),可以通过源码编译的方式重新配置 PHP,使其支持 mysqli。
核心操作方案
以下操作基于 CentOS 系统及 PHP 7.1.5 版本,环境为 Dell G3。其他版本原理类似,请根据实际版本调整路径。
第一步:重新编译 PHP 内核并启用 mysqli
目的:在编译安装 PHP 的初始阶段,通过 configure 命令指定 mysqli 的路径,使 PHP 核心自带该扩展。
- 下载源码:从官方镜像获取对应版本的 PHP 源码包。
wget http://cn2.php.net/distributions/php-7.1.5.tar.gz - 解压并进入目录:
tar zxvf php-7.1.5.tar.gz cd php-7.1.5 - 执行 configure 配置:这是最关键的一步,必须添加
--with-mysqli参数指向系统的mysql_config路径。
注意:如果系统中有多个 MySQL 版本,请使用find / -name mysql_config查找正确路径。./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/mysql_config - 编译与安装:
make && make install - 复制配置文件与 FPM 启动脚本:
cp php.ini-development /usr/local/lib/php.ini cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm chmod +x /etc/init.d/php7-fpm - 初始化 FPM 配置:
cd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf cp php-fpm.d/www.conf.default php-fpm.d/www.conf - 启动服务:
/etc/init.d/php7-fpm start
完成上述步骤后,刷新 phpinfo 页面,若能看到 "mysqli" 模块信息,说明第一步已成功。
第二步:单独编译 mysqli 扩展(备选方案)
目的:如果不想重装整个 PHP,或者第一步未能解决问题,可以直接在已安装的 PHP 源码目录下单独编译 mysqli 扩展模块。
- 进入扩展目录:
此处需注意:路径应为实际安装 PHP 的源码目录,而非当前工作目录。cd /usr/local/php-7.1.5/ext/mysqli - 运行 phpize 生成配置脚本:确保系统中已安装 php-devel 或对应开发包,以便运行 phpize。
/usr/local/php/bin/phpize - 执行配置:再次指定 mysqli 路径和 php-config 路径。
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/mysql_config - 编译与安装:
make && make install
编译成功后,会提示生成的 .so 文件路径(例如 /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/),请记录该路径。
第三步:修改 php.ini 激活扩展
目的:告知 PHP 解释器加载刚刚生成的 mysqli 动态链接库。
- 定位 php.ini:通过 phpinfo 页面中的 "Loaded Configuration File" 找到配置文件的具体路径(通常在
/usr/local/lib/php.ini或/etc/php.ini)。 - 编辑配置文件:使用文本编辑器打开 php.ini。
- 启用扩展:
- 如果是内核级安装(第一步),确认是否有
extension=mysqli.so行且未被注释。 - 如果是独立扩展安装(第二步),在文件末尾添加或取消注释:
extension=你的.so文件绝对路径/mysqli.so
- 如果是内核级安装(第一步),确认是否有
- 重启 PHP-FPM:
/etc/init.d/php7-fpm restart
至此,再次查看 phpinfo,应能完整看到 mysqli 相关的配置项,服务器已具备连接 MySQL 数据库的能力。
常见问题排错
- 找不到 mysql_config:如果运行 configure 时报错找不到
mysql_config,请先安装 MySQL 客户端开发包。在 CentOS 上可执行yum install mysql-devel(或 mariadb-devel)。 - 编译报错 dependency:如果遇到缺少 libxml2、openssl 等依赖的错误,需先使用 yum 安装相应的 devel 包(如
libxml2-devel)。 - 权限不足:在进行
make install或服务管理操作时,可能需要使用 root 权限或在命令前加 sudo。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













