php - 如何为特定目录设置open_basedir

标签 php apache

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

最佳答案

您可以在 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 地址并且此示例 block 可能遗漏很多 此配置的数据仅显示 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 中,; 是分隔符 - 所以这应该有效,但我无法亲自测试它。

关于php - 如何为特定目录设置open_basedir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13291185/

相关文章:

apache - 禁用特定重写位置的 http 身份验证

apache - 通用 mod_rewrite 引用检查

php - 在 php 中回显 session 变量

php - CKEDITOR 和 PHP 和 MYSQL

php - 关于选择选项值

apache - XAMPP中如何更改tomcat端口

php - 多个查询在一个php文件中使用前一个查询的结果集

php - 撇号和等号从句不起作用

php - LAMP 服务器 - 一个命令?

apache - 超出文件大小限制(核心转储)PHP CLI 错误