1

我在 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.devC:\Windows\System32\drivers\etc\hosts.

问题是我希望成为提供文件htdocs的目录,httpd但我想使用 PHP 包含例如位于includes目录中的文件。

我怎么解决这个问题?我已经尝试了很多从$_SERVER['DOCUMENT_ROOT']Apache Alias 到.htaccess调整的解决方案,但到目前为止都没有奏效。一定有一些简单的解决方案。也许我不太正确地理解 DocumentRoot 的概念。我只想模拟典型的服务器文件夹public_html/www/htdocs,同时将重要文件排除在浏览器/用户范围之外。

4

2 回答 2

1

这是我从我的httpd-vhosts.conf. 我做的唯一额外配置是绕过我击中的 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>

我所有的其他虚拟主机看起来像这样:

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

如果您只是想在与您的 htdocs 相同级别的目录中包含某些内容,那么include("../includes/somefile.php")应该可以正常工作。

如果我的问题有误,请告诉我,我会尽力为您提供更多帮助。

于 2013-03-03T03:09:45.170 回答
1

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

php_value include_path ".;c:/project"
于 2013-03-03T03:25:04.093 回答