PDO类找不到的根本原因是PHP未加载pdo和pdo_mysql扩展,需确认phpinfo()显示的php.ini路径,取消extension=php_pdo.dll与extension=php_pdo_mysql.dll注释,确保ext目录下存在对应.dll文件,并重启Apache/Nginx及验证CLI与Web环境一致。

PDO 类找不到,和 phpEnv 本身无关——phpEnv 是个 Windows 下的 PHP 集成环境(类似 XAMPP),它不自动启用所有扩展,PDO 扩展默认可能被禁用或缺失。问题本质是 PHP 运行时没加载 PDO 及对应数据库驱动(如 PDO_mysql),不是 phpEnv 不兼容。
确认当前 php.ini 路径和实际生效配置
phpEnv 启动后,访问 http://localhost/phpinfo.php(或新建一个含 phpinfo() 的文件),搜索 “Loaded Configuration File”,找到正在使用的 php.ini 路径。别改错文件——phpEnv 通常有多个 php.ini(如 CLI 版、Apache 版、php-fpm 版),Web 请求走的是 Apache 或 Nginx 加载的那个。
- 打开该
php.ini,搜索extension_dir,确认值指向正确的扩展目录(如ext子目录,路径中不能含中文或空格) - 搜索
pdo,检查以下几行是否**已取消注释**且拼写正确:extension=php_pdo.dllextension=php_pdo_mysql.dll(MySQL)或extension=php_pdo_sqlite.dll(SQLite) - 注意:phpEnv 多数基于 PHP 7.4+,Windows 下扩展名是
.dll,不是.so;写成pdo_mysql或pdo.so会直接失效
phpEnv 环境下扩展文件实际是否存在
即使 php.ini 写对了,如果 php_pdo.dll 等文件根本不在 extension_dir 指向的目录里,照样报错。进入 phpEnv 安装目录(如 C:\phpEnv\php\php-8.1.12-Win32-vs16-x64\ext\),手动检查:
- 是否存在
php_pdo.dll—— 没有则说明 PHP 包不完整,需重装 phpEnv 或替换为官方完整二进制包 - 是否存在
php_pdo_mysql.dll—— 若用 MySQL,这个也必须存在;若用 MariaDB,它仍走此驱动 - 若只有
php_pdo_sqlite.dll而你连的是 MySQL,PDO::getAvailableDrivers()返回数组里就没有mysql,new PDO('mysql:...')会抛出异常而非类未找到,但类未找到是更前置的问题
重启服务不等于“重启成功”
phpEnv 自带控制面板,点 “Restart Apache” 或 “Restart Nginx” 后,必须验证是否真重启了:
立即学习“PHP免费学习笔记(深入)”;
- 打开任务管理器,确认旧的
httpd.exe或nginx.exe进程已退出,新进程 PID 变化 - 在命令行执行
php --ini(CLI 模式)和php -m | findstr pdo,看输出是否含pdo和pdo_mysql;CLI 和 Web 使用的配置可能不同,必须分别验证 - 若 phpEnv 使用的是 php-fpm(少见但可能),还得单独重启
php-fpm.exe,否则改了php.ini也没用
最容易被忽略的是:phpEnv 的 Apache/Nginx 配置有时会指定独立的 php.ini 路径(通过 PHPINIDir 或 env[PHPRC]),这时改主目录下的 php.ini 是无效的。务必以 phpinfo() 显示的 “Loaded Configuration File” 为准——哪怕它藏在 C:\phpEnv\Apache24\conf\ 之类非标准位置。



















