直接修改vhosts.ini最稳妥:先停Apache,用UTF-8无BOM编辑器打开并确保DocumentRoot与<Directory>路径完全一致、不含中文空格;添加Options +Indexes +FollowSymLinks +ExecCGI;同步修改hosts文件添加127.0.0.1 域名;改完必须停止→重启全部,再查error.log和浏览器效果。

直接改 vhosts.ini 是最稳的方式
PHPStudy 2018 的图形界面“站点域名管理”有时会生成不完整或权限错乱的配置,尤其当你需要开启目录浏览、自定义 Options 或绕过默认 WWW 目录时,手动编辑 vhosts.ini 反而更可控、少踩坑。
操作前先停掉 Apache;然后打开:其他选项菜单 → 打开配置文件 → vhosts.ini。别用记事本——用 VS Code、Notepad++ 等支持 UTF-8 无 BOM 的编辑器,避免中文路径乱码。
- 确保每段
<VirtualHost>块里DocumentRoot指向的是**真实存在的绝对路径**,且路径中不含中文、空格、!@#等符号 -
<Directory>节点的路径必须和DocumentRoot完全一致(包括大小写和末尾斜杠),否则 Apache 启动失败或返回 403 - 若要让浏览器显示目录列表(即 “Index of /” 页面),必须显式加上
Indexes:Options +Indexes +FollowSymLinks +ExecCGI - 如果项目含 Laravel、ThinkPHP 等框架,通常只允许访问
public/子目录,此时DocumentRoot应设为D:\myapp\public,而非整个项目根目录
hosts 文件必须同步改,否则域名根本解析不到本地
哪怕 vhosts.ini 配得再准,只要 C:\Windows\System32\drivers\etc\hosts 没加对应行,浏览器输 test.local 就会走公网 DNS,结果是打不开或跳转到别处。
用管理员权限打开该文件(右键编辑器 → “以管理员身份运行”),在末尾追加一行:
立即学习“PHP免费学习笔记(深入)”;
127.0.0.1 test.local
- 不要写
http://或端口号,只写 IP + 域名,用空格或 Tab 分隔 - 同一 IP 可映射多个域名,每行一条;注释用
#开头 - 改完保存后无需重启系统,但建议清一下浏览器 DNS 缓存(Chrome 地址栏输
chrome://net-internals/#dns→ 点 “Clear host cache”)
Apache 启动失败?大概率是路径或权限问题
点击“启动”后 Apache 图标变红、日志里出现 DocumentRoot must be a directory 或 access denied,基本锁定三类原因:
-
DocumentRoot路径不存在 —— PHPStudy 不会自动创建目录,你得提前mkdir D:\myproject - 路径含中文或空格 —— 即使能创建成功,Apache 也可能拒绝加载,换成
D:\phpdev\blog这类纯英文路径 -
<Directory>块里缺权限指令 —— 必须包含Require all granted(Apache 2.4+ 语法),旧版的Allow from all在 2018 版里已失效
检查方法:打开 phpStudy → 其他选项菜单 → 打开日志 → Apache → error.log,最后一行通常就是真实报错。
为什么改完要“停止→重启全部”,而不是只重启 Apache
PHPStudy 2018 的配置热加载机制不完善,仅点“重启 Apache”可能读取的是旧内存缓存,导致新 vhosts.ini 不生效。必须先彻底停止,再点“重启全部”(或手动点“停止”→等图标全灰→再点“启动”)。
另外注意:vhosts.ini 修改后不会自动覆盖图形界面里“站点域名管理”的记录,两者并存时以 vhosts.ini 为准,但图形界面下次打开可能显示错乱——这属于 UI 同步缺陷,不用管它,以实际访问效果为准。
真正容易被忽略的是:每次改完 vhosts.ini 和 hosts,都得确认 Apache 日志里没有新报错,且浏览器访问时能看到预期页面(而不是 403、404 或下载 .php 文件)。这两步跳过,90% 的“配好了却打不开”问题就出在这儿。



















