为何$_SERVER['DOCUMENT_ROOT']未匹配Apache虚拟主机配置?如何修复?
问题分析与解决:$_SERVER['DOCUMENT_ROOT']未返回虚拟主机配置路径
问题原因
你遇到的情况核心是请求没匹配到对应的虚拟主机配置,Apache仍用默认站点根目录(C:/wamp64/www)处理请求,所以$_SERVER['DOCUMENT_ROOT']返回默认值。常见触发场景:
- Apache没加载虚拟主机配置文件
- 本地hosts文件没映射域名到127.0.0.1
- 访问时用了错误地址(比如直接访问
localhost/test.php,而非虚拟主机的ServerName)
解决步骤
1. 开启Apache对虚拟主机配置的加载
打开WampServer的httpd.conf配置文件,找到这一行:
# Include conf/extra/httpd-vhosts.conf
删掉开头的#注释,改成:
Include conf/extra/httpd-vhosts.conf
保存后重启Apache服务。
2. 配置本地hosts文件映射域名
Windows的hosts文件路径是C:\Windows\System32\drivers\etc\hosts,用管理员权限打开,添加:
127.0.0.1 dev.test.com 127.0.0.1 test
保存后,打开管理员命令提示符执行ipconfig /flushdns刷新DNS缓存。
3. 用虚拟主机的ServerName访问站点
必须通过配置的域名访问:
- 对应
dev.test.com配置,访问http://dev.test.com/test.php - 对应
test配置,访问http://test/test.php
别直接用localhost/test.php或本地文件路径访问,否则Apache会用默认站点配置。
4. 验证配置是否生效
在虚拟主机根目录(比如c:/wamp64/www/test)新建info.php,内容:
<?php phpinfo(); ?>
通过对应域名访问该文件,查看输出里的SERVER_NAME和DOCUMENT_ROOT字段,确认是否匹配虚拟主机配置值。
完成以上步骤后,$_SERVER['DOCUMENT_ROOT']就会返回你在虚拟主机中设置的DocumentRoot路径了。
内容的提问来源于stack exchange,提问作者HDer
相关产品推荐
相关产品推荐

