Windows下PHP用PDO连接MySQL报could not find driver求助
答复
关于$dbname参数的对应关系
代码中传入PDO DSN的$dbname参数,确实对应MySQL中的schema名称。MySQL中schema与database是等价概念,这部分参数定义没有逻辑问题。
「could not find driver」报错修复方案
从你已经做的排查操作看,核心问题是PHP没有正确加载到你修改的php.ini配置文件(你提到phpinfo中Configuration File (php.ini) Path项为空就是直接证据),按以下步骤操作即可修复:
- 先定位你的PHP实际安装目录,例如本地PHP解压在
C:\php路径:- 确认目录下存在有效
php.ini文件:PHP初始安装包默认只提供php.ini-development(开发环境配置模板)和php.ini-production(生产环境配置模板)两个文件,本地开发直接复制php.ini-development,在同目录下粘贴后重命名为php.ini,你之前做的扩展、扩展目录配置修改,要确保是改的这个文件,不要改模板文件。 - 修正扩展目录配置:不要用相对路径
ext,替换为绝对路径,例如:
改完后确认extension_dir = "C:/php/ext"C:/php/ext目录下真实存在php_pdo_mysql.dll文件,不要出现路径拼写错误。 - 确认pdo_mysql扩展开启配置正确:PHP7.0及以上Windows版本,扩展开启写法为
extension=pdo_mysql即可,不需要加.dll后缀,不要沿用老版本extension=php_pdo_mysql.dll的写法,避免加载失败。
- 确认目录下存在有效
- 解决配置文件加载路径问题:
- 打开系统环境变量配置:右键「此电脑」-「属性」-「高级系统设置」-「环境变量」,在系统变量的
Path条目下新增你的PHP安装根目录路径(例如C:\php),保存所有配置窗口。 - 删除你之前复制到
C:/Windows目录下的php.ini文件,避免多份配置文件冲突。
- 打开系统环境变量配置:右键「此电脑」-「属性」-「高级系统设置」-「环境变量」,在系统变量的
- 校验配置生效:
- 完全关闭之前启动的PHP内置服务进程(注意你写的启动命令参数有误,正确参数是大写
-S,正确命令为php -S localhost:9000,小写-s不会启动web服务),新开命令行窗口重新启动服务,旧进程不会加载新配置。 - 新窗口执行
php --ini,查看输出中Loaded Configuration File项,能正确显示你PHP目录下的php.ini完整路径就说明配置文件加载正常。 - 执行
php -m查看已加载扩展列表,能找到pdo_mysql条目就代表驱动加载成功,此时再访问连接代码就不会出现驱动缺失报错。
- 完全关闭之前启动的PHP内置服务进程(注意你写的启动命令参数有误,正确参数是大写
补充排查点:如果本地装过多个PHP版本,要确认命令行调用的
php.exe所属版本、你修改的php.ini所属版本、ext目录下dll文件的版本三者完全一致,版本不匹配(比如TS/NTS版本不一致、x86/x64架构不一致)也会导致扩展加载失败。
内容的提问来源于stack exchange,提问作者Leonard Ebel
相关产品推荐
相关产品推荐

