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 相关文章推荐
MySQL中create table语句的基本语法是
Jan 15 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
php实现计数器方法小结
Jan 05 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
php制作文本式留言板
Mar 18 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
PHP中cookie知识点学习
May 06 PHP
PHP大文件及断点续传下载实现代码
Aug 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+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
php输出形式实例整理
2020/05/05 PHP
javascript 上下banner替换具体实现
2013/11/14 Javascript
innerText 使用示例
2014/01/23 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
jquery实现下拉框左右选择功能
2017/02/21 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
多版本Python共存的配置方法
2017/05/22 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
党员承诺书内容
2014/03/26 职场文书
信访工作汇报材料
2014/10/27 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
Python如何让字典保持有序排列
2022/04/29 Python