Windows系统PHP8环境下如何正确配置启用MySQLi扩展
Windows环境下PHP MySQLi扩展加载失败排查方案
按以下顺序逐一排查,绝大多数同类问题都能快速定位解决:
- 第一步:先确认当前运行的PHP实际加载的配置文件路径
不要凭文件位置判断要修改的php.ini。CLI命令行环境下直接执行php --ini,输出结果里的Loaded Configuration File就是当前命令行调用的PHP真正读取的配置文件路径。如果是web访问场景(浏览器访问网站),在站点根目录新建测试文件写入<?php phpinfo(); ?>,浏览器访问该文件,找到Loaded Configuration File项,对应的路径才是web运行时加载的ini文件——CLI和web环境加载的php.ini很可能不是同一个文件,必须分别确认,之前改了两个文件都不生效,大概率改的是没被实际加载的冗余文件。 - 第二步:确认PHP版本与扩展文件匹配
先通过php -v输出确认当前PHP的属性:是线程安全(TS)还是非线程安全(NTS)、是x64架构还是x86架构。接着打开PHP安装目录下的ext文件夹,确认存在php_mysqli.dll文件,该文件的版本、TS/NTS属性、架构必须和当前PHP版本完全一致,不匹配的话扩展会静默加载失败。如果是第三方下载的精简版PHP,建议直接下载对应版本的官方完整PHP压缩包,解压后把ext目录里的php_mysqli.dll覆盖到现有ext目录。 - 第三步:排查路径与环境变量配置问题
- 确认php.ini里的
extension_dir配置值和实际ext目录路径完全一致,比如PHP实际安装在C:\php,就保留extension_dir="C:\php\ext",注意不要写错目录名,全文件搜索所有extension_dir配置项,确保只有一行生效,避免后面的配置覆盖前面的正确值。 - 打开系统环境变量设置,把PHP的安装根目录(比如
C:\php)加到系统PATH变量的最靠前位置,避免之前安装的其他PHP版本路径优先级更高,导致命令行执行php时实际调用的是其他目录下的程序,改了半天配置根本没作用到运行的PHP上。 - 扩展加载配置只保留
extension=mysqli即可,不需要写全dll路径,也不要加php_前缀、.dll后缀,短写法只要extension_dir配置正确,PHP会自动匹配对应扩展文件,写全路径反而容易因为斜杠格式、权限问题加载失败。
- 确认php.ini里的
- 第四步:排查依赖缺失问题
对应PHP版本的VC++运行库必须安装:PHP7.x需要VC15运行库,PHP8.x需要VC16运行库,缺少运行库时扩展不会报明确的路径错误,只会加载失败。配置完成后直接在命令行执行php --ri mysqli,如果扩展加载失败,这个命令会直接输出具体错误原因(比如找不到依赖、版本不匹配、路径错误),不需要反复跑php -m猜问题。 - 最后验证
命令行环境下配置修改后即时生效,web环境下修改完php.ini必须重启对应的web服务(Apache/Nginx/IIS),重启后再执行php -m或者访问phpinfo页面,就能看到mysqli扩展在已加载列表里。
内容的提问来源于stack exchange,提问作者Haverka
相关产品推荐
相关产品推荐

