核心三步:改hosts(127.0.0.1 myapp.test)、配apache虚拟主机(documentroot指向public、含require all granted)、重启apache;缺一不可,且需逐项验证。

直接上手配虚拟主机和本地域名,核心就三件事:改系统 hosts、写 Apache 虚拟主机配置、重启服务。不绕弯,也不依赖 phpEnv 界面自动操作——因为界面有时漏写、路径错、权限缺,手动查才稳。
改 hosts 文件让域名指向本机
这是所有本地域名生效的前提,跳过这步,后面全白搭。
- 用管理员权限打开 C:WindowsSystem32driversetchosts(Windows)或 /etc/hosts(macOS/Linux)
- 在文件末尾新增一行,格式严格为:127.0.0.1 myapp.test(不要 http://,不要端口,不要 Tab,只用空格分隔)
- 可一次加多个,比如:
127.0.0.1 myapp.test
127.0.0.1 api.myapp.test
127.0.0.1 admin.myapp.test - 保存后立刻刷新 DNS 缓存:
Windows 执行 ipconfig /flushdns
macOS 执行 sudo dscacheutil -flushcache
Linux 执行 sudo systemd-resolve --flush-caches - 验证是否生效:命令行运行 ping myapp.test,返回 127.0.0.1 即成功
配 Apache 的 httpd-vhosts.conf
phpEnv 默认用 Apache,虚拟主机配置必须手动写进 phpenvpacheconfextrahttpd-vhosts.conf,且主配置要启用它。
- 先确认 phpenvpacheconfhttpd.conf 中这行没被注释:
Include conf/extra/httpd-vhosts.conf - 打开 httpd-vhosts.conf,在文件末尾添加完整 VirtualHost 块,例如:
ServerName myapp.test
DocumentRoot "D:/phpenv/www/myapp/public"
AllowOverride All
Require all granted
- DocumentRoot 必须指向 public 目录(Laravel、ThinkPHP 等框架必需;纯 PHP 项目则指到含 index.php 的目录)
- 路径中含空格或中文?必须用英文引号包裹,且推荐用正斜杠 / 或双反斜杠 \ 替代单反斜杠
- 多个域名对应同一项目?复制整个块,只改 ServerName,DocumentRoot 保持一致
- 多个项目不同域名?每个项目单独一个
块,ServerName 和 DocumentRoot 一一对应
重启 Apache 并验证
配置改完不重启 = 没改。phpEnv 控制面板点「重启 Apache」最可靠,别只点「启动」。
- 点 phpEnv 主界面右下角的「Restart Apache」按钮,或托盘图标右键选择重启
- 观察状态栏是否显示「Apache 已启动」;若失败,点「日志」查看报错(常见如语法错误、路径不存在、Require 缺失)
- 浏览器访问 http://myapp.test(务必带 http://,避免 HSTS 自动跳 HTTPS 导致失败)
- 打不开?按顺序排查:
— ping myapp.test 是否通
— httpd-vhosts.conf 里 ServerName 和 hosts 是否完全一致(大小写、点号、空格)
— DocumentRoot 路径是否存在、是否指向 public、是否拼写正确
—块里有没有 Require all granted
phpEnv 界面操作的注意事项
它能自动生成配置,但容易掩盖问题。
- 「添加网站」功能只在你以管理员身份运行 phpEnv 时才写入 hosts;否则 hosts 不变,域名肯定不通
- 界面填的「根目录」必须精确到 public 层,比如 D:/www/myapp/public,不是 D:/www/myapp
- 填完后仍建议手动打开 httpd-vhosts.conf,核对生成内容是否完整(尤其
权限段) - 如果已添加却出 403/404,删掉重来比硬改配置更省时间
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











