如何设置特定目录open_basedir

L84*_*L84 11 php apache

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

new*_*rey 14

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

我通常在一个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>
Run Code Online (Sandbox Code Playgroud)

注:123.123.123.123是你的域名的IP地址该样品板可能遗漏了大量数据的此配置只显示什么需要的open_basedir.

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

open_basedir = "/htdocs/unsecured"
Run Code Online (Sandbox Code Playgroud)

在.htaccess中,您应该能够使用以下内容(尽管我还没有测试过):

php_value open_basedir "/htdocs/unsecured"
Run Code Online (Sandbox Code Playgroud)

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

open_basedir = "C:\xampp\htdocs\unsecured"
Run Code Online (Sandbox Code Playgroud)

在linux中,a :是字段分隔符.在Windows中,它;是分隔符 - 所以这应该工作,但我无法亲自测试它.

  • 该参数不能在.htaccess中设置 (2认同)