【问题标题】:Wamp vhost docroot always shows as c:\wamp\www not the vhost docrootWamp vhost docroot 始终显示为 c:\wamp\www 而不是 vhost docroot
【发布时间】:2011-04-05 23:14:14
【问题描述】:

我已经尝试了许多指南并阅读了大量信息,但我仍然找不到解决问题的方法。我已经卸载、重新安装并检查并仔细检查了所有可能的问题。

问题依然存在。无论我进行什么更改,文档根目录始终显示为 c:\wamp\www。

即使我将 httpd.conf DocumentRoot 更改为另一个路径,它仍然显示为 c:\wamp\www

奇怪的是,如果虚拟主机设置错误,我的 index.php 不应该显示。但事实上确实如此。我有一行代码来回显$_SERVER['DOCUMENT_ROOT'],它总是显示为 c:\wamp\www 而不是我分配的任何 vhosts 文档根目录。

所以页面加载,当然有错误。我的页面全部引用 $_SERVER['DOCUMENT_ROOT'] 并且全部在我的实时网站上完美运行。

所以底线是我已经前后检查了我的配置。 / vs. \,hosts文件是正确的,文档根路径是正确的并且指向包含正确文件的实际文件夹。我玩过所有“标准”和非标准的配置可能性。

一定有其他因素阻止了它的工作。如果可以的话,请帮忙。

请不要建议我尝试其他配置。我都试过了。

请告诉我你知道为什么会发生这种情况以及如何解决它。我的脚本几乎成功了,但感觉还不够。我给发帖人留言了,还没有收到他的回音。

我希望这里有人可以修复,而不是建议尝试另一个配置。除非您知道问题并有解决办法,否则请不要回复。这可能听起来很粗鲁,但我已经看到并尝试了所有配置。

NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
   DocumentRoot C:\wamp\www\itsaboutwirelessnetworks
   ServerName itsaboutwirelessnetworks.localhost
   ServerAlias itsaboutwirelessnetworks
</VirtualHost>

<VirtualHost 127.0.0.1:80>
   DocumentRoot C:\wamp\www\computerstore
   ServerName computerstore.localhost
   ServerAlias computerstore
</VirtualHost>

<VirtualHost 127.0.0.1:80>
  DocumentRoot C:\wamp\www
  ServerName localhost
   ServerAlias localhost
</VirtualHost>

是配置。为什么我不能在 cmets 中使用回车进行编辑?

【问题讨论】:

  • 您能告诉我们相关的虚拟主机配置吗?看起来很奇怪。
  • 啊。你知道你可以编辑你自己的问题吗?那里有更多可读的标记 :) 但这一切看起来确实不错,我不知道在哪里看。 $_SERVER 数组还有什么有趣的吗?
  • '$_SERVER' 数组在哪里?

标签: php wamp config wampserver


【解决方案1】:

C:\Windows\System32\drivers\etc\hosts 中添加这一行:

127.0.0.1 computerstore.local

httpd.conf 中,确保取消注释此行:

Include "conf/extra/httpd-vhosts.conf"

(这应该指向您的 vhosts 文件所在的位置)

您的httpd-vhosts.conf 文件应包含以下内容:

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot              C:\wamp\www
    ServerName                127.0.0.1
    ServerAlias               localhost
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN localhost
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot              C:\wamp\www\conputerstore
    ServerName                computerstore.local
    ServerAlias               computerstore.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN computerstore.local
</VirtualHost>

如果 WAMP 拒绝加载 vhosts 文件,请将 vhosts 配置移动到 httpd.conf 的末尾。

这应该启用基于名称而不是基于 IP 的配置。如果您不这样设置,Apache 将通过 IP 解析您的站点路径,并且由于您指定一个与所有虚拟主机相同的单个 IP,最后一个将优先于前一个。您最后一个 vhost 的 docroot 是 C:\wamp\www - 使您描述的行为绝对正常。

更新:

由于为域名computerstore.local 指定了文档根C:\wamp\www\computerstore,请记住还要在浏览器中转到http://computerstore.local。如果你尝试http://localhost/computerstore,域名将被解析为localhost,并且在第一个vhost中,它的文档根被设置为C:\wamp\wwwcomputerstore 将被视为子目录;在这种情况下不会更改 docroot。

【讨论】:

  • 在您发布时进行了更改。行为没有变化。但你确实告诉我最后一个虚拟主机成为默认主机,所以那一点信息是新的。如果我删除引用本地主机的虚拟主机怎么办?
  • 为了调试,我有 '' 并显示字符串 'C:/wamp/www' (length=11) 因此更改不会更改文档根目录。
  • 所以又一个不改变文档根目录的配置!有人对此有修复吗?
  • @mingos,您发布的更改无效。还有其他想法吗?
  • 我删除了 localhost 条目,结果页面根本没有加载!回到原点! @mingos 你能提供任何其他想法吗?
【解决方案2】:

您是否尝试将 C:\wamp\www\conputerstore 放在引号之间?

例如,这里是我的虚拟主机配置:

<VirtualHost *:8082>  
  DocumentRoot "c:/wamp/www/test"  
  DirectoryIndex index.php  
  <Directory "c:/wamp/www/test">  
    AllowOverride All  
    Allow from All  
  </Directory>  
</VirtualHost>

【讨论】:

  • 是的,我尝试了引号和不引号,将 / 更改为 \ 和 / \ 的每个组合,有和没有 声明和引号或不在那里面。还是不行。但从我读过的内容来看,“”引号适用于具有空格的目录,例如“C:\wamp dir\www folder\”,其中c:\wamp\www 不需要使用引号。还有其他想法吗?
猜你喜欢
  • 2016-01-03
  • 1970-01-01
  • 2011-12-12
  • 2013-06-29
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 2011-03-09
相关资源
最近更新 更多