xampp中pdo_mysql扩展默认禁用,需编辑php.ini取消extension=php_pdo.dll和extension=php_pdo_mysql.dll前的分号,确保使用xampp自带dll、版本架构匹配,并通过pdo::getavailabledrivers()验证实际可用性。

pdo_mysql 扩展在 XAMPP 中默认是禁用的
XAMPP 自带的 php.ini 文件里,pdo_mysql 扩展默认被注释掉,所以 Laravel、Symfony 或任何依赖 PDO 的项目启动时会报 Class 'PDO' not found 或 Driver not found: mysql。这不是 PHP 版本问题,也不是 MySQL 服务没开,而是扩展根本没加载。
修改 php.ini 启用 pdo_mysql 的三步操作
打开 XAMPP\php\php.ini(不是 php.ini-development 或 php.ini-production),定位到 [Dynamic Extensions] 区域附近,确认以下两行已取消注释:
-
extension=php_pdo.dll—— PDO 核心扩展,必须先启用 -
extension=php_pdo_mysql.dll—— MySQL 驱动,注意 Windows 下后缀是.dll,不是.so
⚠️ 常见错误:写成 extension=pdo_mysql 或 extension=php_pdo_mysql.so,这在 XAMPP for Windows 下会直接导致 Apache 启动失败,日志里出现 Unable to load dynamic library。
重启 Apache 之前必须检查的兼容性点
即使配置正确,仍可能加载失败,原因通常是:
- PHP 版本与扩展不匹配:比如你用的是 XAMPP with PHP 8.2,但下载了 PHP 7.x 的独立
php_pdo_mysql.dll,会报%1 is not a valid Win32 application - 位数不一致:64 位 XAMPP 必须配 64 位扩展,混用 32 位 DLL 会报
The specified module could not be found - 依赖缺失:
php_pdo_mysql.dll依赖libmysql.dll或mysqli.dll,如果这些也在php\ext\目录下被注释或缺失,也会连锁失败
✅ 最稳妥做法:只使用 XAMPP 自带的 php_pdo_mysql.dll(它和当前 PHP 版本、架构完全匹配),不要额外下载第三方 DLL。
验证是否真正生效
改完 php.ini 并重启 Apache 后,别只信 phpinfo() 页面里有没有 pdo_mysql 字样——那只是模块注册成功,不代表能连库。执行一个最小化测试:
<?php try {
$pdo = new PDO('mysql:host=127.0.0.1;port=3306', 'root', '');
echo "PDO 构造成功,驱动列表:";
print_r(PDO::getAvailableDrivers());
} catch (Exception $e) {
die("PDO 初始化失败:" . $e->getMessage());
}
?>
如果输出包含 mysql,且没报错,说明扩展已可用;如果报 could not find driver,大概率是 php_pdo.dll 没启用,或者 extension_dir 路径指向错误目录。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











