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 相关文章推荐
探讨如何把session存入数据库
Jun 07 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
php写app用的框架整理
Sep 29 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 PHP
基于laravel where的高级使用方法
Oct 10 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
PHP常用字符串函数用法实例总结
Jun 04 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
javascript动画算法实例分析
2015/07/31 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
centos系统升级python 2.7.3
2014/07/03 Python
python使用pymysql实现操作mysql
2016/09/13 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python实现元素等待代码实例
2019/11/11 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
css3中transition属性详解
2014/09/02 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
六个一活动实施方案
2014/03/21 职场文书
规范化管理年活动总结
2014/08/29 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
何玥事迹观后感
2015/06/16 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js