我在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
,同时将重要文件保留在浏览器/用户范围之外。
答案 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"