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 zlib压缩和解压缩swf文件的代码
Dec 30 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
PHP发送短信代码分享
Aug 11 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
Laravel手动返回错误码示例
Oct 22 PHP
php pdo连接数据库操作示例
Nov 18 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 身份证号验证函数
2009/05/07 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
学习php分页代码实例
2013/10/24 PHP
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
django 常用orm操作详解
2017/09/13 Python
Python人脸识别初探
2017/12/21 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
化验室技术员岗位职责
2013/12/24 职场文书
三八节主持词
2014/03/17 职场文书
关于安全的演讲稿
2014/05/09 职场文书