php连接mysql失败主因是pdo_mysql扩展未启用:需在phpenv对应版本php.ini中按序取消extension=php_pdo.dll和extension=php_pdo_mysql.dll注释,确认extension_dir路径正确,重启web服务后通过phpinfo()或extension_loaded()验证生效。

phpEnv 默认不启用 pdo_mysql 扩展,这是绝大多数“PHP 连接 MySQL 失败”问题的根源——不是配置错,是扩展根本没加载。
确认 pdo_mysql 是否真的启用
别只看 php.ini 里有没有 extension=php_pdo_mysql.dll 这行,得验证运行时是否生效:
- 在 phpEnv 控制面板中点击「PHP Info」,搜索
pdo_mysql;如果页面里完全没出现该模块名,说明未加载 - 或新建一个
test.php,写<?php var_dump(extension_loaded('pdo_mysql'));,返回false就是没启 - 注意:phpEnv 多版本共存,必须确认你改的是当前站点所用 PHP 版本对应的
php.ini(路径通常形如phpenv\versions\8.1.26\etc\php.ini)
手动启用 pdo_mysql 的关键步骤
phpEnv 的 Windows 版本依赖 DLL 文件,且对扩展顺序敏感:
- 打开对应 PHP 版本的
php.ini,确保以下两行都存在且**未被注释**(去掉前面的分号):extension=php_pdo.dllextension=php_pdo_mysql.dll - 这两行**必须按此顺序**,
pdo_mysql依赖pdo,反了会静默失败 - 检查
extension_dir指向是否正确,例如:extension_dir = "D:/phpenv/versions/8.1.26/ext";路径末尾不能有斜杠,也不能用反斜杠混用 - 改完后必须重启 phpEnv 的 Apache/Nginx 服务(不是仅刷新网页),否则配置不生效
常见报错与对应原因
看到这些错误时,基本可锁定为 pdo_mysql 加载问题:
-
Class 'PDO' not found→php_pdo.dll没启用,或extension_dir路径错误导致 DLL 根本没加载 -
could not find driver或SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client→pdo_mysql启用了,但 MySQL 8+ 默认 auth plugin 是caching_sha2_password,旧版 php_pdo_mysql.dll 不支持;此时需降级 MySQL 用户认证方式,或升级 phpEnv 内置 PHP 到 7.4+ 并确认 DLL 是新版编译 - 页面空白无报错 → 开启
display_errors = On和error_reporting = E_ALL,否则扩展加载失败会被静默吞掉
最易被忽略的一点:phpEnv 的「快速切换 PHP 版本」功能会重置当前活动版本的 php.ini 加载状态,切完版本后务必重新检查并重启 Web 服务——很多人反复修改 ini 却无效,卡在这一步。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











