如何开启PHP的mysqli扩展:详细步骤与常见问题解决
在PHP开发中,mysqli(MySQL Improved)扩展是操作MySQL数据库的重要工具,相较于旧版的mysql扩展,它提供了面向对象接口、预处理语句支持、事务处理等增强功能,是PHP 5.0及以上版本的推荐选择,在某些环境下(如全新安装的PHP或自定义编译的PHP),mysqli扩展可能默认未启用,导致代码无法连接数据库,本文将详细介绍如何在Windows和Linux环境下开启mysqli扩展,并解决常见问题。
开启mysqli扩展的通用步骤
无论是Windows还是Linux系统,开启PHP扩展的核心步骤基本一致:定位PHP配置文件→取消扩展注释→确认扩展文件路径→重启PHP服务,以下是具体操作:
第一步:定位PHP配置文件(php.ini)
php.ini是PHP的核心配置文件,控制着PHP的各项功能,包括扩展的加载,其位置因环境而异:
-
Windows环境:
若通过PHP官方安装包安装,php.ini通常位于PHP安装目录下(如C:\php\php.ini);若通过集成环境(如XAMPP、WampServer)安装,则可能位于集成环境的安装目录(如C:\xampp\php\php.ini),可通过在命令行运行php --ini命令快速定位:php --ini
输出中的
Loaded Configuration File即为当前生效的php.ini路径。 -
Linux环境:
若通过包管理器安装(如apt、yum),php.ini通常位于/etc/php/版本号/cli/或/etc/php/版本号/fpm/目录下(如/etc/php/7.4/cli/php.ini);若通过源码编译安装,则位于PHP源码目录的/php.ini,同样可通过php --ini命令确认路径。
第二步:取消mysqli扩展的注释并确认路径
打开php.ini文件,搜索;extension=mysqli(Windows)或;extension=mysqli.so(Linux),找到被注释的mysqli扩展配置行(是PHP的注释符号),去掉前面的,启用该扩展:
; 原始配置(被注释) ;extension=mysqli ; 修改后(启用扩展) extension=mysqli
注意:
- 若
php.ini中无;extension=mysqli这一行,可能是扩展文件未安装或路径错误,需手动添加配置。 - Linux环境下,扩展文件通常为
.so后缀(如mysqli.so),而Windows环境下为.dll后缀(如php_mysqli.dll),需确保扩展文件存在于PHP的扩展目录中(默认为PHP安装目录下的ext文件夹,如C:\php\ext或/usr/lib/php/extensions/no-debug-non-zts-20210902/)。
第三步:确认扩展文件路径是否存在
启用扩展后,需确保mysqli的扩展文件存在于PHP的扩展目录中,若php.ini中未指定扩展路径,PHP默认会从ext目录加载扩展,可通过以下方式验证:
- Windows:检查PHP安装目录的
ext文件夹下是否存在php_mysqli.dll文件。 - Linux:检查扩展目录(可通过
php -i | grep "extension_dir"命令获取)下是否存在mysqli.so文件,若文件不存在,需重新编译PHP并添加mysqli扩展,或从系统包管理器安装(如apt install php-mysql)。
第四步:重启PHP服务或Web服务器
修改php.ini后,需重启PHP服务或Web服务器使配置生效:
-
Windows环境:
- 若使用Apache,重启Apache服务(通过XAMPP控制面板或
net stop apache+net start apache)。 - 若使用Nginx+PHP-FPM,重启PHP-FPM服务(如通过XAMPP控制面板或命令行
net php-fpm restart)。
- 若使用Apache,重启Apache服务(通过XAMPP控制面板或
-
Linux环境:
- 若使用Apache,执行:
sudo systemctl restart apache2
- 若使用Nginx+PHP-FPM,执行:
sudo systemctl restart php-fpm # 或 php7.4-fpm(根据版本号调整)
- 若使用Apache,执行:
验证mysqli扩展是否成功启用
重启服务后,可通过以下方式验证mysqli扩展是否已启用:
方法1:使用phpinfo()函数
在Web根目录创建一个PHP文件(如info.php),添加以下代码并访问:
<?php phpinfo(); ?>
在页面中搜索mysqli,若看到mysqli support => enabled及相关配置信息(如Client API version),则表示扩展已成功启用。
方法2:使用命令行检查
通过命令行运行以下命令:
php -m | grep mysqli
若输出mysqli,则表示扩展已启用。
方法3:使用PHP代码测试
创建一个PHP文件,添加以下代码测试mysqli连接功能:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("连接失败: " . $mysqli->connect_error);
}
echo "mysqli扩展已启用,连接成功!";
$mysqli->close();
?>
若能正常输出结果,则扩展功能完全正常。
常见问题与解决方法
问题1:修改php.ini后重启失败,提示“无法加载php_mysqli.dll”
原因:
php_mysqli.dll文件缺失或路径错误;- PHP版本与扩展文件不匹配(如32位PHP尝试加载64位扩展);
- 系统缺少Visual C++运行库(Windows环境下)。
解决方法:
- 检查
ext目录下是否存在php_mysqli.dll,若不存在,从PHP官网下载对应版本的扩展文件并放入ext目录; - 确认PHP是32位还是64位(通过
phpinfo()中的PHP Version (Architecture)查看),并使用对应位数的扩展文件; - 安装对应的Visual C++运行库(如PHP 7.x需VC15运行库,可从微软官网下载)。
问题2:Linux环境下提示“extension=mysqli.so cannot be loaded”
原因:
mysqli.so文件不存在或路径错误;- PHP编译时未添加
mysqli支持; - 扩展目录权限不足。
解决方法:
- 确认扩展文件存在:通过
php -i | grep "extension_dir"获取扩展目录,检查mysqli.so是否存在; - 若文件不存在,安装PHP-mysql扩展(如
apt install php-mysql或yum install php-mysql); - 修改扩展目录权限:
sudo chmod 755 /usr/lib/php/extensions/no-debug-non-zts-20210902/(路径以实际为准)。
问题3:启用mysqli后,连接MySQL仍报错“Class mysqli not found”
原因:
mysqli扩展未完全启用(可能仅启用了mysqli的某一部分功能);- PHP代码中未正确引入
mysqli类(面向对象方式需new mysqli())。
解决方法:
- 重新检查
php.ini中extension=mysqli是否未被注释; - 确保代码使用正确的
mysqli语法(如面向对象接口或过程化接口),避免混用mysql和mysqli的函数。
开启PHP的mysqli扩展是确保PHP应用能够正常操作MySQL数据库的关键步骤,通过定位php.ini、取消扩展注释、确认扩展文件路径并重启服务,即可完成启用,过程中若遇到问题,可结合phpinfo()和命令行工具排查扩展加载状态、文件路径及版本兼容性,正确启用mysqli扩展后,开发者可充分利用其面向对象接口、预处理语句等高级功能,提升数据库操作的安全性和效率。



还没有评论,来说两句吧...