全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php文件包含目录配置open_basedir的使用与性能详解

1.open_basedir介绍

open_basedir 将php所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。

本指令不受安全模式打开或关闭的影响。

2.open_basedir设置方法

1.在php.ini 加入

open_basedir="指定目录"

2.在程序中使用

ini_set('open_basedir', '指定目录');

但不建议使用这种方法

3.在apache的httpd.conf中的Directory配置

php_admin_value open_basedir "指定目录"
httpd.conf中的VritualHost

php_admin_value open_basedir "指定目录"

4.nginx fastcgi.conf

fastcgi_param PHP_VALUE "open_basedir=指定目录"

用open_basedir指定的限制实际上是前缀,不是目录名。

也就是说 open_basedir=/home/fdipzone 也会允许访问/home/fdipzone_abc,如果要将访问限制为目录,请使用斜线结束路径名,例如:open_basedir=”/home/fdipzone/”

如果要设置多个目录,window使用;分隔目录,linux使用:分隔目录。

3.使用open_basedir限制目录访问

首先创建一个VirtualHost,

设置open_basedir 为/home/fdipzone/sites/in.fdipzone.com/

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /home/fdipzone/sites/in.fdipzone.com
  ServerName in.fdipzone.com
  php_admin_value open_basedir "/home/fdipzone/sites/in.fdipzone.com/"
  <Directory "/home/fdipzone/sites/in.fdipzone.com">
    allow from all Options + Indexes
  </Directory>
</VirtualHost>

在上一层目录 /home/fdipzone/sites/ 中创建一个test.txt文件,在in.fdipzone.com中创建php执行以下代码

<?php
echo file_get_contents('../test.txt');
?>

因为test.txt不在限定的目录范围内,因此php提示警告

Warning: file_get_contents(): open_basedir restriction in effect. File(../test.txt) is not within the allowed path(s): (/home/fdipzone/sites/in.fdipzone.com/) in /home/fdipzone/sites/in.fdipzone.com/index.php on line 3

4.设置open_basedir的性能分析

open_basedir开启后会影响I/O,因为每个调用的文件都需要判断是否在限制目录内。

测试程序,读取限制目录内同一文件10000次

<?php
// 记录开始时间
$starttime = getMicrotime();

// 读取10000次文件
for($i=0; $i<10000; $i++){
  file_get_contents('test.txt');
}

// 记录结束时间
$endtime = getMicrotime();

printf("run time %f ms\r\n", ((float)($endtime)-(float)($starttime))*1000);

function getMicrotime(){
  list($usec, $sec) = explode(' ', microtime());
  return (float)$usec + (float)$sec;
}
?>

关闭open_basedir测试

run time 137.237072 ms

打开open_basedir测试

run time 404.207945 ms

开启open_basedir后,执行时间是关闭的3倍。

总结:使用open_basedir可以限制程序可操作的目录和文件,提高系统安全性。但会影响I/O性能导致系统执行变慢,因此需要根据具体需求,在安全与性能上做平衡。

以上这篇php文件包含目录配置open_basedir的使用与性能详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# php  # open  # basedir  # PHP基于session.upload_progress 实现文件上传进度显示功能详解  # 详解PHP渗透测试文件包含漏洞与利用  # php文件包含的几种方式总结  # PHP中你应该知道的require()文件包含的正确用法  # 使用session upload_progress实现文件包含实例详解  # 给大家  # 创建一个  # 也会  # 多个  # 将会  # 执行时间  # 希望能  # 请使用  # 不受  # 所能  # 要将  # 这篇  # 后会  # 在上  # 但不  # 小编  # 要使  # 上做  # 大家多多  # 变慢 


相关文章: Bpmn 2.0的XML文件怎么画流程图  如何续费美橙建站之星域名及服务?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  湖北网站制作公司有哪些,湖北清能集团官网?  如何用好域名打造高点击率的自主建站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在IIS中新建站点并解决端口绑定冲突?  定制建站策划方案_专业建站与网站建设方案一站式指南  c# Task.ConfigureAwait(true) 在什么场景下是必须的  红河网站制作公司,红河事业单位身份证如何上传?  盐城做公司网站,江苏电子版退休证办理流程?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站之星上传入口如何快速找到?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何实现建站之星域名转发设置?  如何在腾讯云服务器快速搭建个人网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何用美橙互联一键搭建多站合一网站?  如何在建站主机中优化服务器配置?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何在IIS管理器中快速创建并配置网站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何快速搭建FTP站点实现文件共享?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  动图在线制作网站有哪些,滑动动图图集怎么做?  焦点电影公司作品,电影焦点结局是什么?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  小建面朝正北,A点实际方位是否存在偏差?  建站之星安装需要哪些步骤及注意事项?  如何快速搭建自助建站会员专属系统?  建站之星免费版是否永久可用?  建站之星如何一键生成手机站?  如何用免费手机建站系统零基础打造专业网站?  如何高效利用亚马逊云主机搭建企业网站?  家庭服务器如何搭建个人网站?  建站之星2.7模板:企业网站建设与h5定制设计专题  C++时间戳转换成日期时间的步骤和示例代码  完全自定义免费建站平台:主题模板在线生成一站式服务  移民网站制作流程,怎么看加拿大移民官网?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在Ubuntu系统下快速搭建WordPress个人网站?  ,柠檬视频怎样兑换vip?  如何基于云服务器快速搭建个人网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何做网站制作流程,*游戏网站怎么搭建?  制作表格网站有哪些,线上表格怎么弄? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。