Php 如何设置特定的目录open_basedir
我有一个目录Php 如何设置特定的目录open_basedir,php,apache,Php,Apache,我有一个目录/htdocs/unsecured,我想限制该目录或其子目录中的任何内容访问该目录之外的任何内容。我在何处以及如何设置此目录的open\u basedir?您可以在php.ini、httpd.conf或运行时中进行设置。您可以在Apache配置文件php.ini或.htaccess文件中设置open\u basedir 我通常在apache配置文件中设置它,比如/etc/httpd/conf/httpd.conf 您将拥有当前域/虚拟主机的目录结构,您可以直接在其中添加行: <
/htdocs/unsecured
,我想限制该目录或其子目录中的任何内容访问该目录之外的任何内容。我在何处以及如何设置此目录的open\u basedir
?您可以在php.ini、httpd.conf或运行时中进行设置。您可以在Apache配置文件php.ini或.htaccess文件中设置open\u 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>
在.htaccess中,您应该能够使用以下内容(尽管我还没有测试):
编辑(Windows路径)根据评论,您正在Windows上运行xammp(而不是使用虚拟主机)。有了这些信息,我建议将
open_basedir
规则放入php.ini
文件中。这应该(希望)对你有用:
open_basedir = "C:\xampp\htdocs\unsecured"
在linux中,
:
是字段分隔符。在Windows中,
是分隔符-因此这应该可以工作,但我无法亲自测试它。好的,但是我使用什么样的路径?什么是/路径/到/您的/站点?这是一台Windows计算机,因此此目录的路径为E:\xampp\htdocs\unsecure,那么我是否要用此替换/path/to/your/site?那么在路径和open_basedir中作为分隔符的冒号呢?或者/path/to/your/site是否相对于htdocs目录?我使用前斜杠还是后斜杠?我应该在路径周围使用引号吗?我看过文档中的open_basedir,它非常有用vague@L84假设/htdocs/unsecure
与您的站点无关,则/path/to/your/site
引用了配置了多个虚拟主机的计算机。如果是,你可以用它来代替。在Windows中,您应该能够使用反斜杠设置它,如open\u basedir=“C:\xampp\htdocs\unsecure”
,但我通常使用前斜杠(如linux中):open\u basedir=“C:/xampp/htdocs/unsecure”
。我不太会使用Windows,所以我建议尝试和错误(很遗憾,但这是真的)。是的,我建议在路径周围加引号(虽然不是必需的)。我不知道在这种情况下虚拟主机或站点是什么。我只是把所有东西都放进了/htdocs。我不知道如何为这个目录设置php_admin_值open_basedir,因为路径有一个冒号,冒号也是一个分隔符。没关系,我在文档中看到Windows上使用了分号。不过,糟糕的医生。很好的提示,谢谢!但是这也会阻止一个shell_exec(“ls/”)
?这个参数不能在.htaccess中设置
php_value open_basedir "/htdocs/unsecured"
open_basedir = "C:\xampp\htdocs\unsecured"