PHP 配置文件中open_basedir选项作用


Posted in PHP onJuly 19, 2009

如下是php.ini中的原文说明以及默认配置:
; open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory or
; per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
open_basedir = .
open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也
可用符号"."来代表当前目录。注意用open_basedir指定的限制实际上是前缀,而不是目录名。
举例来说: 若"open_basedir = /dir/user", 那么目录 "/dir/user" 和 "/dir/user1"都是
可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。例如设置成:
"open_basedir = /dir/user/"

open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用
冒号分隔目录。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。

有三种方法可以在Apache中为指定的用户做独立的设置:

(a) 在Apache的httpd.conf中Directory的相应设置方法:

php_admin_value open_basedir /usr/local/apache/htdocs/
#设置多个目录可以参考如下:
php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/

(b) 在Apache的httpd.conf中VirtualHost的相应设置方法:
php_admin_value open_basedir /usr/local/apache/htdocs/
#设置多个目录可以参考如下:
php_admin_value open_basedir /var/www/html/:/var/tmp/

(c) 因为VirtualHost中设置了open_basedir之后, 这个虚拟用户就不会再自动继承php.ini
中的open_basedir设置值了,这就难以达到灵活的配置措施, 所以建议您不要在VirtualHost
中设置此项限制. 例如,可以在php.ini中设置open_basedir = .:/tmp/, 这个设置表示允许
访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录.

请注意: 若在php.ini所设置的上传文件临时目录为/tmp/, 那么设置open_basedir时就必须
包含/tmp/,否则会导致上传失败. 新版php则会提示"open_basedir restriction in effect"
警告信息, 但move_uploaded_file()函数仍然可以成功取出/tmp/目录下的上传文件,不知道
这是漏洞还是新功能.

针对ShopEx472版本的配置:

open_basedir = "D:/Server;../catalog;../include;../../home;../syssite;../templates;../language;../../language;../../../language;../../../../language"

PHP 相关文章推荐
PHP中的正规表达式(二)
Oct 09 PHP
php REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
dedecms中使用php语句指南
Nov 13 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
PHP时间和日期函数详解
May 08 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP form 表单传参明细研究
Jul 17 #PHP
php与php MySQL 之间的关系
Jul 17 #PHP
php 图片上传类代码
Jul 17 #PHP
PHP源码之 ext/mysql扩展部分
Jul 17 #PHP
php 小乘法表实现代码
Jul 16 #PHP
php at(@)符号的用法简介
Jul 11 #PHP
php str_pad 函数用法简介
Jul 11 #PHP
You might like
PHP文件上传原理简单分析
2011/05/29 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
php实现微信支付之退款功能
2018/05/30 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python关闭占用端口方式
2019/12/17 Python
python中温度单位转换的实例方法
2020/12/27 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
总裁岗位职责
2013/12/04 职场文书
应届生自荐书
2014/06/23 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python