在Windows上更改Apache的DocumentRoot不起作用。

4

我正在尝试将本地Windows机器上的DocumentRoot更改为指向htdocs下的子目录。我已经在httpd.conf中更改了DocumentRoot位置以及Directory位置。我已经重新启动了Apache,但使用PHP打印出的文档根仍然指向默认位置。

httpd.conf中的更改:

DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/folder_test/website"

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/folder_test/website">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

当我访问http://localhost/folder_test/website时,从我的PHP输出中可以看到以下内容:
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs

我的PHP代码:

<?php 
  //Get the document root 
  $root = getenv("DOCUMENT_ROOT") ; 
  Echo $root; 
?> 

我已经重启了Apache… 我还缺少什么吗?

2个回答

4
打开“\conf\extra\httpd-vhosts.conf”文件。
修改

<VirtualHost _default_:80>
DocumentRoot "${SRVROOT}/htdocs"
#ServerName www.example.com:80
</VirtualHost>

将此部分反映所需的目录,对于您的情况:

<VirtualHost _default_:80>
DocumentRoot "${SRVROOT}/htdocs/folder_test/website"
#ServerName www.example.com:80
</VirtualHost>

1
在浏览了数百个主题后,这个终于对我起作用了!谢谢。 - decadenza
这对我有用。然后我收到了“访问被禁止!”的消息,我不得不在vhost conf文件中添加目录元素,您可以在此处阅读更多信息:https://dev59.com/UmMm5IYBdhLWcg3wKskj#23594870 - tedi

0

嘿,如果这个问题还没有得到解答:

有时候当你在httpd.conf中更改文档根目录和其他信息时,它不会反映出来,因为你所做的更改根本没有保存。在notepad++和diffmerge中,它并不显示未保存,相反它显示已保存。但是在普通的记事本中打开它,并尝试替换它时,它会显示访问被拒绝。可能是因为这些文件夹没有用户修改权限。因此,为了达到这个目的,你需要:

  1. 将更改保存在另一个具有相同名称httpd.conf的文件中
  2. 将apache根目录中的http.conf重命名为httpd_backup.conf或直接删除它。
  3. 现在将你创建的新文件即httpd.conf复制到apache根目录中。
  4. 进入“打开apache监视器”并重新启动。
  5. 清除浏览器中的所有缓存和cookie,然后再试一次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接