phpEnv修改hosts需三步闭环:先以管理员权限通过“环境设置→修改hosts”打开并正确添加“127.0.0.1 域名”(ANSI编码、无多余符号),再执行ipconfig /flushdns刷新DNS,最后重启Apache/Nginx并确认站点绑定与根目录指向正确。

phpEnv 自带 hosts 编辑功能,但很多人改完没反应——根本原因不是不会写,而是改了没刷新 DNS、没重启服务、或格式写错导致整行被忽略。
phpEnv 内置 hosts 编辑器怎么打开
phpEnv 主界面右上角有「环境设置」按钮(齿轮图标),点击后选择「修改 hosts 文件」,它会自动以管理员权限调起记事本并定位到 C:\Windows\System32\drivers\etc\hosts。这个路径不能手输错,也不能用普通记事本另存为 UTF-8 —— 否则系统直接拒读。
- 如果点开是空白或报“拒绝访问”,说明记事本没以管理员身份运行,需手动右键记事本 → “以管理员身份运行”,再通过“文件 → 打开”导航至该路径
- 不要用 VS Code 或 Sublime 直接双击打开 hosts,它们默认无管理员权限,保存必失败
- phpEnv 的编辑器只是快捷入口,底层仍是系统 hosts 文件,改的是同一份
添加本地域名的正确写法
在文件末尾新增一行,严格按“IP + 一个空格 + 域名”格式,例如:127.0.0.1 tp6.test。任何多余空格、制表符、中文标点、# 后没空格,都会让这一行失效。
- 域名不能带
http://或端口号,比如127.0.0.1 http://tp6.test:8000是错的 - 多个域名要分多行写,
127.0.0.1 tp6.test和127.0.0.1 api.tp6.test不能合并成一行 - 注释必须独占一行且以
#开头,如:# ThinkPHP 6 开发站,不能写在域名后面 - 改完别急着关,先确认记事本右下角显示“ANSI”编码(Windows 下必须是 ANSI,不是 UTF-8)
为什么改了 hosts 还打不开 tp6.test
90% 的问题不出在 hosts 本身,而是后续环节断了。浏览器发请求前,要经过 DNS 解析 → Web 服务路由 → PHP 路径映射三层,任意一层挂掉都 404。
立即学习“PHP免费学习笔记(深入)”;
- 没刷新 DNS 缓存:Windows 下必须以管理员身份运行命令提示符,执行
ipconfig /flushdns - Web 服务没重启:phpEnv 界面里点「重启 Apache」或「重启 Nginx」,光改 hosts 不重启等于白改
- 虚拟主机没配对:tp6.test 必须对应 phpEnv 中已启用的站点根目录(如
D:\phpEnv\www\tp6\public),且该站点的「域名绑定」里要填tp6.test - 伪静态没开:ThinkPHP 等框架依赖 .htaccess 或 nginx 重写规则,若 public 目录下没有
.htaccess,或 nginx 配置里没设root指向public/,照样 403 或 404
phpEnv 下测试是否生效的最快方式
别一上来就开浏览器输网址,先用命令行验证解析是否走通:
- Win + R → 输入
cmd→ 回车,执行:ping -n 1 tp6.test,看到回复来自127.0.0.1才算 hosts 生效 - 如果 ping 不通,但
ping 127.0.0.1通,说明 hosts 格式或权限有问题 - 如果 ping 通了但浏览器仍 404,立刻去 phpEnv 控制台看 Apache/Nginx 日志,错误信息通常直接指出是 403(权限)、500(PHP 报错)还是 404(路由或 root 路径错)
真正卡住人的,从来不是加那一行 127.0.0.1 tp6.test,而是改完之后忘了 flushdns、忘了点重启、或者 root 没指向 public 目录——这三处漏掉任意一个,整个流程就停在半路。



















