phpEnv 中启用 pdo_mysql 需确认真实 php.ini 路径(如 phpenv\php74\php.ini)、确保 ext\php_pdo_mysql.dll 存在、在 php.ini 中按序启用 extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,并重启环境后用代码及 php -m 验证。

phpEnv 是 Windows 下的轻量级 PHP 集成环境,它不依赖 Apache/Nginx,靠内置的 PHP-CGI + 路由转发模拟运行,因此扩展启用方式和标准 WAMP/XAMPP 不同——php.ini 文件位置、加载逻辑、甚至扩展文件名都可能错配,直接照搬通用教程大概率失败。
确认 phpEnv 使用的 php.ini 路径
phpEnv 启动时会读取自身目录下的 php\php.ini(不是系统 PHP 安装目录里的),且不同版本路径略有差异:
- 常见路径是
phpenv\php\php.ini或phpenv\php74\php.ini(取决于你选的 PHP 版本子目录) - 运行
phpenv php --ini命令,输出中 “Loaded Configuration File” 行才是真实生效的php.ini路径 - 别改错文件:改了别的
php.ini,重启 phpEnv 也无效
检查 pdo_mysql 扩展文件是否存在
phpEnv 自带的 PHP 二进制包通常已编译好 pdo_mysql,但扩展文件未必默认启用或放对位置:
- 进入
phpenv\php\ext\(或对应 PHP 版本子目录的ext\)目录,确认存在php_pdo_mysql.dll(Windows)或pdo_mysql.so(Linux/macOS,但 phpEnv 主要用于 Windows) - 若不存在,说明该 phpEnv 版本未打包该扩展——不能用
pecl install,因为 phpEnv 没配 PECL 环境;需换用含完整扩展的 phpEnv 版本,或手动下载匹配 PHP 版本/线程安全(TS/NTS)/架构(x64/x86)的 DLL - 扩展名必须严格匹配:
php_pdo_mysql.dll,不是pdo_mysql.dll或php_pdo_mysql
在 php.ini 中正确启用扩展
找到真实生效的 php.ini 后,修改两处关键配置:
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
立即学习“PHP免费学习笔记(深入)”;
- 取消注释
extension=php_pdo.dll(PDO 核心驱动,必须先加载) - 取消注释
extension=php_pdo_mysql.dll(MySQL 驱动,依赖前者) - 这两行必须都在
[PHP]段落内,且顺序不能颠倒:先php_pdo,再php_pdo_mysql - 不要加
extension_dir路径——phpEnv 默认从ext/目录加载,硬写路径反而容易指向错误目录
验证是否真正生效
改完配置后必须重启 phpEnv(不是只刷新浏览器),然后用代码验证,而非仅看 phpinfo() 页面:
- 写个
test.php:<?php if (!extension_loaded('pdo')) echo "PDO 扩展未加载\n"; if (!extension_loaded('pdo_mysql')) echo "pdo_mysql 扩展未加载\n"; try { $pdo = new PDO('mysql:host=127.0.0.1;dbname=information_schema', 'root', ''); echo "PDO 连接实例可创建\n"; } catch (Exception $e) { echo "PDO 实例创建失败:" . $e->getMessage() . "\n"; } ?> - 如果只输出前两行“未加载”,说明
php.ini没生效或扩展文件名/路径错;如果报“could not find driver”,说明php_pdo_mysql.dll加载失败(常见于 TS/NTS 不匹配) -
php -m | findstr pdo在命令行执行,应同时看到pdo和pdo_mysql
最常被忽略的是:phpEnv 的每个 PHP 版本目录都有一套独立的 php.ini 和 ext/,切版本后必须重新检查对应目录下的配置和文件——换 PHP 版本却不改 php.ini,等于白调。


















