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 相关文章推荐
用PHP编写PDF文档生成器
Oct 09 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
Yii框架页面渲染操作实例详解
Jul 19 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与SQL注入攻击[一]
2007/04/17 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python解析xml中dom元素的方法
2015/03/12 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
英语专业个人求职信范文
2014/02/01 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
停电通知范文
2015/04/16 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python
教你部署vue项目到docker
2022/04/05 Vue.js
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
字节飞书面试promise.all实现示例
2022/06/16 Javascript