发布于2026-05-23 阅读(0)
扫一扫,手机访问

很多开发者初次使用phpEnv时,都会遇到一个典型的“拦路虎”:代码里调用mysqli_connect()或者new mysqli()时,页面直接报错,提示“Class ‘mysqli’ not found”或者函数未定义。这背后的原因其实很简单:phpEnv默认并不会自动启用mysqli扩展。你必须手动完成配置修改和重启服务这两步,否则数据库连接就无从谈起。
这里有个关键点需要特别注意:phpEnv这类多版本管理器,通常会为每个PHP版本维护独立的配置文件。这意味着,你不能想当然地去修改系统默认的php.ini,否则很可能做了无用功。
那么,如何找到真正生效的那个配置文件呢?有两个方法:
php -i | grep “Loaded Configuration File”。这条命令会告诉你命令行(CLI)模式下PHP加载的是哪个配置文件。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系统)。
好消息是,在phpEnv中,mysqli扩展通常已经随PHP一起编译好了,只是默认被“封印”了起来。我们的任务就是解除这个封印,过程并不复杂。
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。配置改完、服务重启,是不是就万事大吉了?别急,经验告诉我们,很多问题就出在“以为开了,其实没开”这个环节。验证环节必不可少,它能帮你区分是扩展没加载,还是数据库本身连接有问题。
立即学习“PHP免费学习笔记(深入)”;
php -m | grep mysqli。如果看到输出mysqli,说明命令行环境下的扩展已经加载成功。如果没有,那说明你修改的php.ini可能不是CLI模式使用的那个。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支持。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8