在Windows 10上搭建PHP 8.0.30并启用pdo_mysql扩展,需确保VC15运行库已安装、php.ini中正确配置extension_dir和extension=pdo_mysql、CLI与Web环境分别验证扩展加载,并将MySQL连接host设为127.0.0.1以匹配caching_sha2_password认证。

在 Windows 10 上搭建 PHP 8.0.30 并启用 pdo_mysql 扩展,关键不是“装上就完事”,而是确保 PHP 能真正加载该扩展、连接到 MySQL 服务,并通过 PDO 正常通信。整个过程需同步检查 PHP 配置、MySQL 状态、连接参数三者是否匹配。
确认 PHP 安装包类型与运行库兼容
PHP 8.0.30 在 Windows 上仅提供 NTS(Non-Thread Safe)ZIP 包,必须搭配 VC15 运行库(即 Microsoft Visual C++ 2015–2019 Redistributable)。若系统缺失该运行库,即使 php.ini 配置正确,也会在启动时静默失败或报 DLL 加载错误。
- 前往微软官网下载并安装 Visual C++ 2015–2019 Redistributable (x64)
- 解压官方 ZIP 包(如
php-8.0.30-nts-Win32-vs15-x64.zip)到固定路径,例如D:\php - 复制
php.ini-development重命名为php.ini,这是开发环境推荐模板
配置 php.ini 启用 pdo_mysql 扩展
扩展启用失败的常见原因是路径错误、扩展名不匹配或未取消注释。PHP 8.0+ 的 Windows 扩展统一为 .dll 文件,且必须与 PHP 主版本、架构(x64)、NTS 类型严格一致。
- 打开
php.ini,定位到extension_dir行,改为绝对路径:extension_dir = "D:/php/ext"(使用正斜杠或双反斜杠,避免转义问题) - 查找并取消以下两行前的分号:
;extension=pdo→ 改为extension=pdo;extension=pdo_mysql→ 改为extension=pdo_mysql - 确保
date.timezone已设置,例如:date.timezone = Asia/Shanghai(否则部分时间函数异常,间接影响数据库操作)
验证扩展是否生效
不要依赖浏览器访问 phpinfo() 就认为扩展已就绪——CLI 和 Web 服务器可能加载不同 php.ini,必须分别验证。
立即学习“PHP免费学习笔记(深入)”;
- 命令行执行:
php -v(确认 PHP 版本无误)php --ini(查看 CLI 实际加载的 php.ini 路径)php -m | findstr "pdo mysql"(应同时输出pdo和pdo_mysql) - 若未显示,检查:
•php.ini是否在php --ini输出的路径下
•ext目录中是否存在php_pdo.dll和php_pdo_mysql.dll
• 是否有其他同名但版本冲突的 DLL 被误放至ext或系统 PATH 中
确保 MySQL 服务可连且权限匹配
pdo_mysql 扩展启用 ≠ 数据库能连通。ThinkPHP 或其他框架报 Access denied for 'root'@'localhost',大概率是 MySQL 的 user@host 认证逻辑与 PHP 连接方式不一致。
- PHP 默认用
'hostname' => 'localhost'时,在 Windows 下可能走命名管道而非 TCP,而 MySQL 8.0+ 默认只允许'root'@'localhost',不自动等价于'root'@'127.0.0.1' - 解决方法二选一:
✓ 将应用配置中的hostname明确改为'127.0.0.1'(强制走 TCP)
✓ 或登录 MySQL 执行:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'your_password';GRANT ALL ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;FLUSH PRIVILEGES; - 额外注意:MySQL 8.0+ 默认认证插件为
caching_sha2_password,旧版 PHP 可能不兼容。若仍报错,可临时切换:ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'your_password';
不复杂但容易忽略



















