14

我有一个目录/htdocs/unsecured,我想限制该目录或其子目录中的任何内容访问该目录之外的任何内容。我只在哪里以及如何设置open_basedir这个目录?

4

2 回答 2

17

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

我通常在 /etc/httpd/conf/httpd.conf 之类的 apache 配置文件中设置它。

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

<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 中,a:是字段分隔符。在 Windows 中,;是分隔符 - 所以这应该可以工作,但我无法亲自测试它。

于 2012-11-08T14:45:35.990 回答
0

您可以在 php.ini、httpd.conf 或运行时更改 open_basedir 。

于 2012-11-08T14:45:14.780 回答