必须手动创建目标文件夹,否则Apache启动失败并报“DocumentRoot must be a directory”;路径禁用中文、空格及特殊符号,末尾不加斜杠;多站点需同步配置vhosts.ini与hosts文件。

phpStudy V8.1 跨盘设置网站根目录必须手动创建目标文件夹
直接在 phpStudy 设置里填 D:\myproject 或 E:\php-apps 是可行的,但 Apache 启动一定会失败——除非你提前在资源管理器里新建好这个空文件夹。错误现象是服务图标变红,日志里出现 DocumentRoot must be a directory。这不是软件 bug,而是 Apache 的硬性校验:它拒绝启动时自动创建根目录,也不报“路径不存在”这种友好提示。
操作要点:
- 路径中不能含中文、空格、
!@#¥%等符号(哪怕文件夹名是“项目1”,也会导致 Apache 无法加载) - 路径末尾不加斜杠,写成
D:\myproject,别写成D:\myproject\ - 如果目标盘符(如 E:)未格式化或被占用,phpStudy 不会提醒,只会静默失败
用 vhosts.ini 配置多项目跨盘虚拟主机时 hosts 必须同步改
单站点改根目录走图形界面就够了;但你要同时跑 WordPress(D:\sites\wp)、Laravel(E:\laravel-app)、纯静态前端(F:\front-dev),就得靠 vhosts.ini。这里最容易漏的一步:只配了 vhosts.ini,却忘了改系统 hosts 文件。
典型错误现象:浏览器访问 http://wp.local 直接跳转到百度,或者显示“无法连接”。原因就是 DNS 解析没落到本地。必须用管理员权限打开 C:\Windows\System32\drivers\etc\hosts,追加:
立即学习“PHP免费学习笔记(深入)”;
127.0.0.1 wp.local 127.0.0.1 laravel.test 127.0.0.1 front.dev
注意:vhosts.ini 里的 ServerName 和 hosts 里的域名必须严格一致(区分大小写、无空格、无端口)。
绑定不同 PHP 版本时,跨盘路径不影响版本隔离逻辑
有人担心:“我把 Laravel 项目放在 E 盘,PHP 8.1 安装在 D:\phpstudy_pro\Extensions\php\php-8.1.12,路径不一致会不会绑定失败?”不会。phpStudy 的版本绑定机制不依赖物理路径嵌套,它靠的是在 vhost 配置中注入 FastCGI 或 proxy 指令,指向对应 PHP-CGI 可执行文件。
验证是否真正生效,不要看 phpStudy 界面右下角显示的“当前 PHP 版本”,而要看:
- 该站点根目录下
info.php输出的PHP Version行 -
Server API字段是Apache 2.0 Handler(Apache 模式)还是FPM/FastCGI(Nginx 模式) - 如果显示的是全局默认版本,大概率是
hosts没配对,或访问用了localhost/project而非你定义的域名
迁移跨盘项目到新电脑时,别只复制网站文件夹
你想把 D:\myproject 整个挪到另一台机器继续开发?只复制文件夹过去是不够的。phpStudy 不会自动识别“新位置的旧项目”,它只认配置里写的路径和 vhosts.ini 记录。
正确做法分两步:
- 先在新机器上安装 phpStudy 到相同路径(比如都装在
D:\phpstudy_pro),并确保已安装对应 PHP 版本 - 再把原机器的整个
D:\phpstudy_pro目录打包覆盖过去(包括vhosts.ini、WWW、Extensions等),而不是只拷D:\myproject
否则你会遇到:网站能访问,但 PHP 版本回退到默认值,或 MySQL 连不上(因为数据库文件也在 D:\phpstudy_pro\Extensions\MySQL5.7.26\data 里)。



















