phpEnv 中 pdo_mysql 扩展默认不启用,需手动在对应版本的 php.ini 中添加 extension=pdo_mysql 并重启环境;验证需同时满足 php -m | grep pdo 输出 pdo 和 pdo_mysql,且连接测试能通过。

phpEnv 中 pdo_mysql 扩展默认是否启用
phpEnv 默认安装的 PHP 版本(如 7.4/8.0/8.1)通常已编译支持 PDO,但 pdo_mysql 扩展**不会自动启用**——它必须显式加载。直接写 new PDO() 报错 Class 'PDO' not found 或 could not find driver,基本就是这个原因。
确认 phpEnv 当前 PHP 的扩展目录和配置路径
phpEnv 管理多个 PHP 版本,每个版本有独立的 php.ini 和扩展目录。别直接改系统级或旧版本的配置。
- 先查当前激活的 PHP 版本:
phpenv version - 再查它的
php.ini位置:php --ini(看 “Loaded Configuration File”) - 确认扩展文件存在:
ls $(php-config --extension-dir)/pdo_mysql.so(Linux/macOS)或dir %PHPENV_ROOT%\versions\{v}\lib\php\extensions\*pdo_mysql*(Windows)
在 phpEnv 中启用 pdo_mysql 的三步操作
不是简单取消注释,而是要匹配 PHP 版本、架构和扩展名后缀。
- 打开对应版本的
php.ini(例如~/.phpenv/versions/8.1.22/etc/php.ini) - 添加这行(注意:Linux/macOS 用
.so,Windows 用.dll):extension=pdo_mysql(推荐不带后缀,PHP 会自动识别) - 重启 Web 服务或 CLI 环境:如果跑的是 Apache/Nginx,需 reload;若纯 CLI 测试,关掉终端重开即可生效
验证是否真正生效,而不是“看起来启用了”
只看 phpinfo() 里有 pdo_mysql 不够——得确认连接能走通,且字符集、预处理都按预期工作。
立即学习“PHP免费学习笔记(深入)”;
- 运行
php -m | grep pdo,应同时输出pdo和pdo_mysql - 执行脚本测试连接:
php -r "$pdo = new PDO('mysql:host=localhost;dbname=information_schema;charset=utf8mb4', 'root', ''); echo 'OK';"—— 若报could not find driver,说明扩展没载入;若报Access denied,说明扩展已生效,只是凭据问题 - 检查 DSN 中的
charset=utf8mb4是否被识别:连上后执行SELECT @@character_set_client, @@collation_connection,结果应为utf8mb4
最容易被忽略的是:phpEnv 切换版本后,php --ini 显示的配置路径可能还是旧版本的,导致你改了错的 php.ini;另一个是 Windows 下扩展名写成 php_pdo_mysql.dll 而不是 pdo_mysql,PHP 8.0+ 已不认这种旧命名。



















