phpEnv如何开启mysqli扩展 phpEnv数据库连接支持
phpEnv默认未启用mysqli扩展,需手动配置。首先确认当前PHP版本对应的php.ini文件路径,可通过命令行或创建phpinfo页面查找。编辑该文件,找到并取消注释extension=mysqli相关行,保存后重启Web服务。最后通过命令行、phpinfo页面或测试代码验证扩展是否成功加载。切换PHP版本后需重新配置。
phpEnv如何开启mysqli扩展 phpEnv数据库连接支持

很多开发者初次使用phpEnv时,都会遇到一个典型的“拦路虎”:代码里调用mysqli_connect()或者new mysqli()时,页面直接报错,提示“Class ‘mysqli’ not found”或者函数未定义。这背后的原因其实很简单:phpEnv默认并不会自动启用mysqli扩展。你必须手动完成配置修改和重启服务这两步,否则数据库连接就无从谈起。
确认 phpEnv 当前使用的 php.ini 路径
这里有个关键点需要特别注意:phpEnv这类多版本管理器,通常会为每个PHP版本维护独立的配置文件。这意味着,你不能想当然地去修改系统默认的php.ini,否则很可能做了无用功。
那么,如何找到真正生效的那个配置文件呢?有两个方法:
- 命令行确认:打开终端,运行
php -i | grep “Loaded Configuration File”。这条命令会告诉你命令行(CLI)模式下PHP加载的是哪个配置文件。 - Web环境确认:如果你是通过Apache或Nginx访问网页,那么还需要确认Web服务器使用的配置。方法是在网站根目录创建一个
info.php文件,内容写上,然后在浏览器中访问它。在显示的页面里搜索“Loaded Configuration File”,就能找到Web服务器实际读取的php.ini路径。
常见的路径格式可能是C:\phpenv\versions\8.2.12\php.ini(Windows系统)或者/home/user/.phpenv/versions/8.2.12/etc/php.ini(Linux/macOS系统)。
启用 mysqli 扩展的三步操作
好消息是,在phpEnv中,mysqli扩展通常已经随PHP一起编译好了,只是默认被“封印”了起来。我们的任务就是解除这个封印,过程并不复杂。
- 第一步:编辑配置文件。用你习惯的文本编辑器(如Notepad++、VS Code)打开上一步确认的
php.ini文件。 - 第二步:取消注释。在文件中搜索
extension=mysqli(Linux/macOS系统)或者extension=php_mysqli.dll(Windows系统)。找到后,确保这一行开头没有分号;。如果看到的是;extension=mysqli,只需把那个分号删掉即可。 - 第三步:检查并重启。顺带看一眼
extension_dir这个配置项,确保它指向了正确的扩展目录(例如extension_dir = “ext”或一个绝对路径)。最后,也是最关键的一步:保存文件,然后重启对应的Web服务或PHP-FPM进程。在Windows上可能需要重启Apache服务,在Linux/macOS上,如果phpEnv提供了管理命令(如phpenv restart)就用它,否则需要手动重启PHP-FPM。
验证 mysqli 是否真正生效
配置改完、服务重启,是不是就万事大吉了?别急,经验告诉我们,很多问题就出在“以为开了,其实没开”这个环节。验证环节必不可少,它能帮你区分是扩展没加载,还是数据库本身连接有问题。
立即学习“PHP免费学习笔记(深入)”;
- 命令行验证:运行
php -m | grep mysqli。如果看到输出mysqli,说明命令行环境下的扩展已经加载成功。如果没有,那说明你修改的php.ini可能不是CLI模式使用的那个。 - Web环境验证:再次访问之前创建的
info.php页面,在页面中搜索“mysqli”。如果扩展已启用,这里会显示完整的mysqli模块信息,包括客户端API版本和是否支持mysqlnd驱动。 - 实战代码测试:写一段最简单的连接测试代码,这是最直接的验证方式:
connect_error) { die('mysqli 扩展已加载,但连接失败:' . $conn->connect_error); } echo '✅ mysqli 可用且能连通'; ?>运行这段代码,如果提示“Class ‘mysqli’ not found”,那铁定是扩展根本没加载起来。如果提示连接被拒绝或密码错误,那反而说明扩展已经生效了,问题出在数据库服务或账号权限上。
最后,还有两个容易踩的坑需要提醒:第一,当你使用phpEnv切换PHP版本后,新版本的php.ini配置并不会继承旧版本的修改,每次切换版本,都需要重新检查并启用mysqli。第二,某些精简版的phpEnv构建可能默认没有包含mysqlnd驱动,这会导致即使mysqli扩展加载了,也无法完全支持utf8mb4字符集或预处理语句等高级功能。这时,你需要确认当前PHP是否编译时包含了mysqlnd支持。


































