如何在XAMPP中的VirtualHost中访问DocumentRoot之外的文件?

时间:2013-03-03 03:05:51

标签: php apache xampp virtualhost

我在Windows 7中配置了虚拟主机。该项目位于C:\project中,具有以下结构:

project
  \cache
  \configs
  \htdocs
    \css
    \images
    \js
    \.htaccess
    \index.php
  \includes
    \setup.php
    \en.php
  \lib
  \templates
  \templates_c

在我的httpd-vhosts.conf中,我创建了一个VirtualHost:

 <VirtualHost *:80>
    DocumentRoot "C:/project/htdocs"
    ServerName project.dev

    <Directory "C:/project/htdocs">
        Options Indexes FollowSymLinks ExecCGI Includes
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

并将127.0.0.1 project.dev添加到C:\Windows\System32\drivers\etc\hosts

问题在于我希望htdocs成为httpd将提供文件的目录,但我希望在PHP中包含位于{{1}中的文件}目录。

我该如何解决这个问题?我已经尝试了从includes到Apache Alias和$_SERVER['DOCUMENT_ROOT']调整的很多解决方案,但到目前为止还没有任何工作。一定有一些简单的解决方案。也许我不能正确理解DocumentRoot的概念。我只想模拟典型的服务器文件夹.htaccess,同时将重要文件保留在浏览器/用户范围之外。

2 个答案:

答案 0 :(得分:1)

这是我从httpd-vhosts.conf获取的VHost。我做的唯一额外配置是绕过我遇到的403:

<VirtualHost *:80>
    ServerName "Markdown.loc"
    ServerAlias "www.Markdown.loc"
    DocumentRoot "C:\INTERNAL\PHP\Markdown"
    <Directory "C:\INTERNAL\PHP\Markdown">
        Options +Indexes
        AllowOverride All
    </Directory>
</VirtualHost>

我所有的其他VHost都是这样的:

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/somesite.loc"
    ServerName somesite.loc
    ServerAlias www.somesite.loc
</VirtualHost>

如果你只是想在一个与你的htdocs相同的级别中包含一些东西,include("../includes/somefile.php")应该可以正常工作。

如果我的问题出错了,请告诉我,我会尽力帮助你。

答案 1 :(得分:1)

在虚拟主机或.htaccess中设置包含路径:

php_value include_path ".;c:/project"