根本原因是phpenv所依赖的mysql二进制包(如mysql-5.7.x-winx64)由visual studio 2013编译,需系统预装对应位数的microsoft visual c++ 2013 redistributable(x64或x86),而windows默认不包含msvcr120.dll和msvcp120.dll。

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











