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分页示例代码
Mar 19 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
php文件上传、下载和删除示例
Aug 28 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
php中bind_param()函数用法分析
Mar 28 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
Laravel框架下的Contracts契约详解
Mar 17 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版微信发红包接口用法示例
2016/09/23 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
JavaScript调试工具汇总
2014/12/23 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
软环境建设心得体会
2014/09/09 职场文书
工作经历证明书范文
2014/11/02 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
AJAX实现省市县三级联动效果
2021/10/16 Javascript
PHP遍历数组的6种方式总结
2021/11/17 PHP