PDO与MySQL驱动问题:启用extension=pdo_mysql仍提示找不到驱动
核心结论
客户端API版本8.3.4和PHP8.0.30不匹配确实可能是原因之一,但先优先排查更常见的基础问题。
分步排查步骤
确认修改的是正确的php.ini文件
运行php --ini命令,查看Loaded Configuration File对应的路径——很多环境会存在多个php.ini副本,别改错了文件。修改完成后必须重启Web服务器(Apache/Nginx)或PHP-FPM,否则配置不会生效。检查pdo_mysql扩展文件是否存在
在phpInfo里找到extension_dir的路径,进入该目录确认是否存在pdo_mysql.so(Linux系统)或php_pdo_mysql.dll(Windows系统)。如果文件缺失,需要重新安装对应PHP8.0版本的pdo_mysql扩展,不要使用高版本的扩展文件替代。版本不兼容的影响
MySQL客户端API(libmysqlclient/mariadb-client)和PHP扩展版本不兼容时,会导致扩展无法加载。PHP8.0对应的客户端API建议使用8.0.x系列,8.3.4版本过高,大概率存在兼容性问题。解决办法是安装与PHP8.0匹配的MySQL客户端库,或者换用MariaDB 10.5+的客户端库(通常与PHP8.0兼容)。查看PHP错误日志获取细节
在phpInfo里找到error_log的路径,打开日志查看扩展加载失败的具体原因——比如依赖缺失、版本不兼容等,日志里的信息比“Could not find driver”这个泛泛的提示有用得多。分环境验证
用命令行执行php -m,查看输出中是否包含pdo_mysql。如果命令行环境有但Web环境没有,说明Web服务器使用的PHP配置和命令行不是同一套,需要分别调整配置。同时用极简代码测试连接:
<?php try { $pdo = new PDO('mysql:host=localhost;dbname=test', 'your_user', 'your_pass'); echo "连接成功"; } catch (PDOException $e) { echo "错误: " . $e->getMessage(); } ?>
内容的提问来源于stack exchange,提问作者GuizmoU

