我有一个目录/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/