PHP 配置open_basedir 让各虚拟站点独立运行


Posted in PHP onNovember 12, 2009

当时觉得这跟IIS相比,实在太差了,因为在IIS里,可以在安全性里设置一个站点甚至一个目录访问时使用的匿名账号,只要各个站点使用的账号不一样,站点间的安全就不会互相影响。这几天才发现,原来当时的想法是错的,在Apache下,也可以配置PHP来实现各站点间的相互独立运行,虽然不能详细控制以某个用户运行某个站点,但至少不会再出现整个服务器被拿下的局面。

通过配置PHP的open_basedir即可以实现该控制,这个配置在IIS下也有用,但这里只讲Apache下的配置。

open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也
可用符号"."来代表当前目录。open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用
冒号分隔目录。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。以下以Linux系统下的配置为例

方法一:在php.ini里配置
open_basedir = .:/tmp/

方法二:在Apache配置的VirtualHost里设置
php_admin_value open_basedir .:/tmp/

方法三:在Apache配置的Direcotry里设置
php_admin_value open_basedir .:/tmp/

关于三个配置方法的解释:
a、方法二的优先级高于方法一,也就是说方法二会覆盖方法一;方法三的优先级高于方法二,也就是说方法三会覆盖方法二;
b、配置目录里加了“/tmp/”是因为php默认的临时文件(如上传的文件、session等)会放在该目录,所以一般需要添加该目录,否则部分功能将无法使用;
c、配置目录里加了“.”是指运行php文件的当前目录,这样做可以避免每个站点一个一个设置;
d、如果站点还使用了站点目录外的文件,需要单独在对应VirtualHost设置该目录;

设置完成后,记得找个PHP网马(如:phpspy)来玩一玩,测试一下有没有问题,不出意外,权限应该是控制得相当好的。
大家还有什么PHP安全配置的经验,欢迎分享交流。

PHP 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
php $_SERVER当前完整url的写法
Nov 12 #PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 #PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
Nov 12 #PHP
php 分库分表hash算法
Nov 12 #PHP
PHP 面向对象实现代码
Nov 11 #PHP
超级简单的php+mysql留言本源码
Nov 11 #PHP
PHP 远程关机实现代码
Nov 10 #PHP
You might like
php 文件状态缓存带来的问题
2008/12/14 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
微信支付的开发流程详解
2016/09/13 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
vue项目中api接口管理总结
2018/04/20 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
Python生成随机MAC地址
2015/03/10 Python
Python Socket编程详细介绍
2017/03/23 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
python 实现list或string按指定分段
2019/12/25 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
速比涛英国官网:Speedo英国
2019/07/15 全球购物
工商行政处罚决定书
2015/06/24 职场文书
防震减灾主题班会
2015/08/14 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
使用python向MongoDB插入时间字段的操作
2021/05/18 Python