phpenv站点根目录默认为D:\phpEnv\www{域名}(Windows)或/Users/xxx/phpEnv/www/{域名}(macOS),可在控制面板“网站管理”中查看,实际路径由vhost配置文件(如D:\phpEnv\config\apache\vhost{域名}.conf)中的DocumentRoot指定。

phpenv 本身不直接管理网站根目录,它只负责 PHP 版本切换;你看到的“修改根目录”操作,实际是修改其内置 Apache/Nginx 的配置,或调整 phpenv 创建站点时默认挂载的路径。
phpenv 站点根目录在哪?怎么看当前设置
phpenv 启动服务后,每个域名对应一个物理目录,默认规则是:D:\phpEnv\www\{域名}(Windows)或 /Users/xxx/phpEnv/www/{域名}(macOS)。例如访问 tp8.com,实际指向 D:\phpEnv\www\tp8.com。
- 打开 phpenv 控制面板 → “网站管理” → 找到对应域名,右侧显示的“根目录”就是当前生效路径
- 该路径不是硬编码在 phpenv 主程序里,而是写在站点配置文件中(如
D:\phpEnv\config\apache\vhost\tp8.com.conf) - 如果没改过,就一定是
www子目录下的同名文件夹
改 Apache 虚拟主机配置(Windows/macOS 通用)
phpenv 底层用的是 Apache + mod_php,所以必须同步改两处:DocumentRoot 和 路径,否则 403 错误必现。
- 找到对应站点的 vhost 配置文件:
D:\phpEnv\config\apache\vhost\{域名}.conf - 把这两行改成一致的新路径(注意正斜杠 / 或双反斜杠 \):
DocumentRoot "D:/myproject"<br><directory></directory>
- 确保新路径存在、无中文、无空格,且 Apache 用户(如 SYSTEM 或 www-data)有读取权限
- 保存后,在 phpenv 面板点击“重启 Apache”,不要只点“重载”
ThinkPHP/Laravel 等框架要额外改 public 子目录
这类框架不希望整个项目目录暴露给 Web,只应把 public 当作根目录。比如 ThinkPHP8 安装后,真实入口是 tp8.com/tp/public,但浏览器地址栏不能带 /tp/public。
- 不能只改
DocumentRoot为D:/phpEnv/www/tp8.com/tp/public—— 这会导致路由和资源路径错乱 - 正确做法:保持 vhost 的
DocumentRoot指向tp8.com/tp/public,同时确认index.php中的require __DIR__.'/../vendor/autoload.php';路径仍能向上跳转 - 若框架报“Class not found”,大概率是
include_path或自动加载路径没对上,需检查php.ini中的include_path是否包含项目 vendor 目录
改完打不开?优先查这三件事
90% 的失败不是配置写错,而是环境没对齐。
- Apache 日志在
D:\phpEnv\logs\apache\error.log,搜[crit]或[error]行,常见报错:DocumentRoot must be a directory(路径不存在)、Permission denied(权限不足) - phpenv 的“端口管理器”里点开“本地 TCP 端口进程列表”,确认 80/443 端口没被 Skype、IIS 或其他 Apache 实例占用
- 改了 vhost 后没重启 Apache,或者重启的是 Nginx(你用的是 Apache 模式),面板右下角图标颜色会提示当前启用的服务类型
最易忽略的点:phpenv 修改根目录后,原 www 下旧项目不会自动迁移,所有文件得手动挪过去;而且像 .htaccess 这类规则文件,如果新路径没继承原配置,RewriteRule 就会失效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











