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程序
Oct 09 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
Apr 01 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
php修改数组键名的方法示例
Apr 15 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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函数
2006/12/06 PHP
程序员编程十条戒律
2009/07/09 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
python画图把时间作为横坐标的方法
2019/07/07 Python
python字符串查找函数的用法详解
2019/07/08 Python
Python网页解析器使用实例详解
2020/05/30 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
国际书籍零售商:Wordery
2017/11/01 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
复古服装:RetroStage
2019/05/10 全球购物
关于赌博的检讨书
2014/01/24 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
获奖感言一句话
2015/07/31 职场文书
python获取带有返回值的多线程
2022/05/02 Python