我在我的Mac上运行多个PHP应用程序,运行OS X 10.5.6,Apache 2,PHP 5.我为每个项目设置了子域,每个子域都有一个主机文件条目,Apache配置中有虚拟目录块.所以
project1.localhost转到/ Library/WebServer/Documents/Project1
project2.localhost转到/ Library/WebServer/Documents/Project2
等...
但是,这种方法并没有真正"隔离"Web应用程序.例如,如果我包含这样的脚本:
它引用了我计算机基本目录中的脚本.所以它访问
C:/includes/include.php
有没有办法让我参考
C:/Library/WebServer/Documents/Project2/includes/include.php
基本上,使它不知道它自己的目录之外的任何东西.另外,有没有办法在每个子域的基础上使用php.ini?
我相信每个虚拟主机都可以设置一个php.ini
... PHPINIDir /full/path/to/php/ini/
这样你就可以自定义open_basedir和其他
您可以通过在httpd.conf文件中的文件夹块中添加open_basedir指令来限制脚本查看特定文件夹树之上的内容的能力。它应该看起来像:
<目录/完整/路径/到/文件夹/包含/脚本/>
php_admin_value open_basedir“ / full / path / to / top / folder / of / desired / tree /”
目录>
一件事-如果您不以/结束路径,则为通配符匹配。换句话说,“ / var / etc / my”将匹配“ / var / etc / myFolder”以及“ / var / etc / myMothersFolder”,而“ / var / etc / my /”仅匹配该文件夹名称。