phpEnv 中添加自定义域名只需在「网站管理」界面点击「添加网站」,填写域名(如myapp.test)和根目录(须精确到public/web),它会自动修改hosts、生成虚拟主机配置并重启服务。

phpEnv 里怎么加自定义域名
phpEnv 自带「网站管理」界面,点一下就能完成 hosts + 虚拟主机的联动配置,不用手动改两处文件。它会在后台自动做三件事:往系统 hosts 文件追加映射、生成 Apache/Nginx 对应的虚拟主机配置、重启对应服务。
操作路径是:主页 → 网站 → 添加网站。填完「域名」(如 myapp.test)和「根目录」后,phpEnv 会默认启用 Apache 并写入 httpd-vhosts.conf;如果你选了 Nginx,则生成 conf.d/myapp.test.conf。
注意两点:
- 必须用管理员权限启动 phpEnv,否则无法写入
C:\Windows\System32\drivers\etc\hosts - 域名不能带
www.前缀再单独配一次——phpEnv 不会自动处理泛解析,www.myapp.test和myapp.test是两个独立域名,要分别添加 - 如果添加后浏览器打不开,先检查 phpEnv 右下角状态栏是否显示「Apache 已启动」或「Nginx 已启动」,没亮就说明服务根本没起来
为什么配好了域名却 403 Forbidden
常见原因是 DocumentRoot 指向了项目外层目录,而不是框架的 public 或 web 入口目录。比如 ThinkPHP 项目结构是 D:\phpenv\www\myapp\public\index.php,但你在 phpEnv 里填的根目录是 D:\phpenv\www\myapp,Apache 就会拒绝访问 public 以下路径。
立即学习“PHP免费学习笔记(深入)”;
解决方法很简单:
- 在 phpEnv 添加网站时,「根目录」务必选到
public(Laravel/ThinkPHP)或web(Symfony)这一级 - 如果项目没 public 目录(比如纯 PHP 脚本),确保该目录下有
index.php,且 Apache 有读取权限 - 检查 phpEnv 自动生成的配置里有没有
Require all granted——旧版 phpEnv 有时漏掉这行,得手动打开conf/extra/httpd-vhosts.conf补上
phpEnv 配置里 ServerName 和 ServerAlias 的区别
ServerName 是主域名,必须唯一且与 hosts 里写的完全一致;ServerAlias 是别名,用来收同一站点的其他域名请求,比如想让 myapp.test 和 dev.myapp.test 都指向同一个项目。
phpEnv 默认不生成 ServerAlias,要自己加:
<VirtualHost *:80>
ServerName myapp.test
ServerAlias dev.myapp.test api.myapp.test
DocumentRoot "D:/phpenv/www/myapp/public"
<Directory "D:/phpenv/www/myapp/public">
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
改完保存,然后在 phpEnv 界面点「重启 Apache」——只点「重载配置」不够,因为 phpEnv 的重载逻辑不识别你手加的 ServerAlias 行。
Chrome 打开自定义域名提示“此网站无法提供安全连接”
这是浏览器把 .test 当成 HTTPS 强制域名了。从 Chrome 63 开始,.test 被 IETF 官方保留为本地测试专用顶级域,但 Chrome 默认要求它走 HTTPS,而 phpEnv 默认只配 HTTP。
有两个绕过方式:
- 换用
.localhost后缀(如myapp.localhost),它被所有现代浏览器明确允许用于 HTTP 本地开发,且无需证书 - 坚持用
.test?那就得给 phpEnv 配一套自签名 SSL 证书,过程涉及openssl生成、Apache 加载mod_ssl、配置SSLCertificateFile——对本地调试来说,纯属增加复杂度
真正容易被忽略的是 DNS 缓存:改完 hosts 后,Windows 用户要运行 ipconfig /flushdns,macOS 用户要运行 sudo dscacheutil -flushcache,否则旧解析可能卡住几分钟。



















