根本原因是phpEnv所依赖的MySQL二进制包(如mysql-5.7.x-winx64)由Visual Studio 2013编译,需系统预装对应位数的Microsoft Visual C++ 2013 Redistributable(x64或x86),而Windows默认不包含msvcr120.dll和msvcp120.dll。
phpEnv 启动 MySQL 失败并报缺失,根本原因不是 phpEnv 本身有问题,而是它依赖的 MySQL 二进制包需要 Visual C++ 2013 运行库 —— 你的系统没装这个运行库,或者装了但位数不匹配。
为什么 phpEnv 会卡在 MySQL 启动这一步
phpEnv 是个轻量级本地环境套件,它不自带 MySQL 安装程序,而是直接解压预编译好的 MySQL zip 包(比如
mysql
-5.7.x-winx64)。这类官方二进制包由 Visual Studio 2013 编译,强制依赖
(C 运行时)和
(C++ 运行时)。Windows 默认不带这两个文件,尤其干净安装的 Win10/Win11 或精简版系统。
即使你手动双击
,也会弹窗报错:“由于找不到
,无法继续执行代码”
phpEnv 的启动脚本只是调用
,底层失败,上层就显示“MySQL 打不开”
别试把 dll 文件丢进 phpEnv 目录或 MySQL
目录 —— Windows 加载顺序不认这个,必须注册到系统路径或安装运行库
该装哪个 VC++ 可再发行包
关键看你的 phpEnv 用的是 32 位还是 64 位 MySQL。绝大多数现代 phpEnv 集成包(如官网最新版、GitHub 上主流 fork)默认配的是
,所以你要装
(VC++ 2013 Redistributable x64)。
确认方法:进 phpEnv 安装目录 →
→ 右键
→ “属性” → “详细信息” → 查看“文件版本”和“平台”字段,写的是
就选 64 位安装包
下载地址必须是微软官方:
https://www.php.cn/link/9eca6659a8b78c13386f85bb3fbb70a2
(2026 年仍有效)
不要下“微软常用运行库合集”,里面可能混入旧版或打包异常的组件,反而引发冲突
装完不用重启,但建议关掉所有命令行窗口再重试 phpEnv 启动
装了 vcredist 还是报错?检查三个盲区
常见于多环境共存或权限受限的机器,表面装成功,实际没生效:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
和
路径被策略锁定:某些企业版 Windows 或安全软件会拦截 dll 注册。打开管理员权限的 PowerShell,运行
,如果没输出,说明文件确实没落盘
同时存在多个 VC++ 2013 版本:比如你之前装过 VS2013 社区版,又装了独立 vcredist,可能版本号微小差异(如 12.0.30501 vs 12.0.40664)导致加载失败。用
卸载所有带 “Microsoft Visual C++ 2013 Redistributable” 字样的条目,再干净重装
phpEnv 自带的 MySQL 初始化脚本出错:
生成 data 目录失败后,后续
启动会静默退出。检查 phpEnv 根目录下
是否为空;若空,删掉整个
文件夹,再以管理员身份运行一次初始化命令
真正麻烦的不是找不到 dll,而是你装了 64 位 vcredist,却误用了 32 位 phpEnv 套件(或反过来)——这种位数错配不会报 dll 错误,而是直接闪退或日志里只有
,得靠 Process Monitor 抓句柄才能定位。动手前先盯死 MySQL 的架构位数。
MSVCR120.dllmsvcr120.dllmsvcp120.dllmysqld.exeMSVCR120.dllmysqld --consolebin/mysql-5.7.x-winx64vcredist_x64.exemysql\bin\mysqld.exex64system32SysWOW64Get-ChildItem C:\Windows\System32\msvcr120.dll -ErrorAction SilentlyContinueControl Panel → 程序和功能mysqld --initializemysqldmysql\data\datamysqld got exception 0xc000007b