Windows11下XAMPP 8.2.0运行PDO连接提示could not find driver求助
问题描述
一段可在笔记本正常运行的PDO MySQL连接代码,在Windows 11台式机的XAMPP 8.2.0环境中运行时,始终提示could not find driver,且无论XAMPP服务是否启动均出现该错误(正常未启动服务时应提示连接被拒绝)。已尝试取消php.ini扩展注释、卸载重装XAMPP等操作,phpinfo()显示PDO已启用,但问题未解决。
连接代码如下:
<?php $servername = "localhost"; $username = "root"; $password = ""; try { $conn = new PDO("mysql:host=$servername;dbname=oopphptest1", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }
排查与解决步骤
1. 确认修改的是正确的php.ini文件
运行phpinfo(),找到Loaded Configuration File项,复制对应的文件路径,确保你修改的是这个路径下的php.ini,而非XAMPP/php目录下的php.ini-development或php.ini-production模板文件。
2. 修正extension_dir与PDO MySQL扩展设置
打开上述正确的php.ini文件:
- 找到
extension_dir,将其设置为绝对路径(避免相对路径解析错误),例如:extension_dir = "C:\xampp\php\ext" - 找到
extension=pdo_mysql行,确保前面没有分号;注释(XAMPP 8+版本无需添加.dll后缀)。
3. 验证扩展文件存在性
前往C:\xampp\php\ext目录,确认php_pdo_mysql.dll文件存在且大小正常(约30-50KB),若文件缺失或损坏,重新下载安装官方XAMPP 8.2.0包。
4. 重启Apache服务
修改php.ini后必须重启XAMPP中的Apache服务,否则配置不会生效。在XAMPP控制面板中点击Stop再Start即可。
5. 检查CLI与Apache使用的PHP版本一致性
打开命令提示符:
- 输入
php -v,查看版本是否与XAMPP的PHP 8.2.0一致,若不一致说明系统环境变量中优先调用了其他版本的PHP; - 输入
php -m,查看输出列表中是否包含pdo_mysql,若缺失需调整环境变量,将XAMPP的php目录(如C:\xampp\php)移至环境变量Path的最顶端。
6. 解决Windows权限问题
右键XAMPP安装目录(如C:\xampp),选择「属性」→「安全」→「编辑」,为当前登录用户添加「完全控制」权限,应用后重启Apache,避免因权限不足导致扩展文件无法加载。
7. 确认PDO驱动加载状态
再次运行phpinfo(),找到PDO模块区域,查看PDO drivers项是否包含mysql。若包含则驱动已成功加载,此时再测试连接代码即可;若仍未显示,建议彻底卸载XAMPP(清理残留文件)后重新安装。
内容的提问来源于stack exchange,提问作者Thomas Cottis

