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 相关文章推荐
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php在字符串中查找另一个字符串
Nov 19 PHP
php 接口类与抽象类的实际作用
Nov 26 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP实现的简单sha1加密功能示例
Aug 27 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
js 幻灯片的实现
2011/12/06 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
详解async/await 异步应用的常用场景
2019/05/13 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
Python操作列表之List.insert()方法的使用
2015/05/20 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
办理护照介绍信
2014/01/16 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
2015年班组长工作总结
2015/04/10 职场文书
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA