如何设置特定目录open_basedir

时间:2012-11-08 14:41:48

标签: php apache

我有一个目录/htdocs/unsecured,我想限制该目录或其子目录中的任何内容访问该目录之外的任何内容。我在何处以及如何仅为此目录设置open_basedir

2 个答案:

答案 0 :(得分:12)

您可以在Apache配置文件,php.ini或.htaccess文件中设置open_basedir

我通常在apache配置文件中设置它,例如/etc/httpd/conf/httpd.conf。

您将拥有当前域/虚拟主机的目录结构,您可以直接在其中添加该行:

<VirtualHost 123.123.123.123:80>
    <Directory /htdocs/unsecured>
        php_admin_value open_basedir "C:/htdocs/unsecured"
    </Directory>
</VirtualHost>

注意: 123.123.123.123是域的IP地址,此示例块可能会遗漏很多数据对于此配置,仅显示open_basedir所需的内容。

在php.ini中,您可以在更广泛的级别上执行此操作(并且它将应用于服务器上的每个域):

open_basedir = "/htdocs/unsecured"

在.htaccess中,你应该可以使用以下内容(虽然我没有测试过):

php_value open_basedir "/htdocs/unsecured"

编辑(Windows路径)
根据评论,您在Windows上运行xammp(而不是使用虚拟主机)。有了这些信息,我建议您将open_basedir规则放在php.ini文件中。这应该(希望)适合你:

open_basedir = "C:\xampp\htdocs\unsecured"

在linux中,:是一个字段分隔符。在Windows中,;是分隔符 - 因此 应该,但我无法亲自测试。

答案 1 :(得分:0)

您可以在php.ini中,httpd.conf中或运行时期间change the open_basedir