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模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
php学习笔记之基础知识
Nov 08 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP数据库处理封装类实例
Dec 24 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 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 数字左侧自动补0
2008/03/31 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
大学生求职信范文应怎么写
2014/01/01 职场文书
运动会通讯稿500字
2014/02/20 职场文书
新任教师自我鉴定
2014/02/24 职场文书
网络编辑职责
2014/03/01 职场文书
我的画教学反思
2014/04/28 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL