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 登录记住密码实现思路
May 07 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
谈谈 PHP7新增功能
Dec 16 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
基于PHP制作验证码
Oct 12 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 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/04/21 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
如何用python 操作zookeeper
2020/12/28 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
公司周年庆典策划方案
2014/05/17 职场文书
秦兵马俑导游词
2015/02/02 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js