本地PHP开发优先用phpenv:双击启动Apache/MySQL,2分钟即可访问localhost;Docker适用于部署与协作,非单机快速开发。

直接说结论:本地 PHP 开发,优先用 phpenv;Docker 是为部署和团队协作准备的,不是为单机快速启动写的。
phpenv 启动一个新项目只要 2 分钟
你双击桌面快捷方式,点 Apache 和 MySQL 的“启动”,等两秒变绿,http://localhost 就能访问 index.php。不需要写 Dockerfile,不用记 docker-compose up -d,也不用担心 volume 权限、SELinux 或 Windows WSL2 网络桥接失败。
常见场景下它更省心:
- 刚 clone 下来一个 Laravel 项目,想立刻跑起来看效果 →
phpenv local 8.2.12切版本,刷新浏览器 - 同事发来一个用 PHP 7.4 写的老系统,你本机默认是 8.3 →
cd old-project && phpenv local 7.4.33,自动生效 - 需要改
php.ini调upload_max_filesize→ 直接在 phpenv 控制面板点“PHP 配置”,图形界面改完保存,重启 Apache 即可
Docker 在本地开发时容易卡在哪
不是 Docker 不好,而是它解决的问题和你当前需求错位。典型卡点包括:
- Windows 上用 WSL2 + Docker Desktop,
./vendor目录挂载后性能暴跌,composer install慢 3–5 倍 - 调试时想进容器查日志:
docker exec -it php-apache bash,结果发现没装vim、curl,还得先apt update && apt install -y vim curl - MySQL 连接地址写成
localhost,实际得改成mysql(服务名),但 IDE 的数据库工具连不上,因为端口没暴露或没配 network - 前端用 Vite/HMR,静态资源热更新在容器里延迟高,不如本地文件系统直读
什么时候该切到 Docker
当出现以下任一信号,说明 phpenv 已经不够用了:
- 你的项目必须依赖特定版本的
libpng或gd扩展编译参数,而 phpenv 提供的二进制包不满足 - 团队多人开发,有人用 Windows、有人用 macOS,但要求
php -v、php --ini、php -m输出完全一致 - CI 流水线跑测试失败,但本地 phpenv 环境一切正常 → 说明环境差异引入了隐藏 bug,这时用 Docker 镜像统一构建环境就是刚需
- 你正在把项目往 Kubernetes 迁移,本地用 Docker Compose 模拟 service mesh、sidecar、健康检查探针
phpenv 实际使用中三个易忽略的坑
这些细节不处理,轻则报错,重则浪费半天排查时间:
- 安装路径含中文或空格(比如
C:\Program Files\phpenv)→ Apache 启动失败,错误日志里出现Invalid argument: AH00111: Config error - 杀毒软件(尤其是 360、腾讯电脑管家)拦截
httpd.exe或mysqld.exe→ 表现为服务启动后立刻停止,控制面板图标闪红又变灰 - 修改过
php.ini但页面没生效 → 忘了在 phpenv 控制面板里点“重载 PHP 配置”,或者没重启 Apache(仅重启 MySQL 不管用)
复杂点在于:phpenv 的“多版本共存”靠的是软链接切换 php.exe 和配置目录,一旦你在命令行手动改过 PATH 或运行过其他 PHP 安装包,就可能破坏这个机制。遇到 php -v 显示的版本和控制面板不一致,第一反应不是重装,而是执行 phpenv rehash(如果支持)或检查 where php 输出路径。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











