欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php文件包含目錄配置open_basedir的使用與性能詳解

 更新時(shí)間:2017年04月03日 09:39:19   投稿:jingxian  
下面小編就為大家?guī)硪黄猵hp文件包含目錄配置open_basedir的使用與性能詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1.open_basedir介紹

open_basedir 將php所能打開的文件限制在指定的目錄樹中,包括文件本身。當(dāng)程序要使用例如fopen()或file_get_contents()打開一個(gè)文件時(shí),這個(gè)文件的位置將會(huì)被檢查。當(dāng)文件在指定的目錄樹之外,程序?qū)⒕芙^打開。

本指令不受安全模式打開或關(guān)閉的影響。

2.open_basedir設(shè)置方法

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指定的限制實(shí)際上是前綴,不是目錄名。

也就是說 open_basedir=/home/fdipzone 也會(huì)允許訪問/home/fdipzone_abc,如果要將訪問限制為目錄,請(qǐng)使用斜線結(jié)束路徑名,例如:open_basedir=”/home/fdipzone/”

如果要設(shè)置多個(gè)目錄,window使用;分隔目錄,linux使用:分隔目錄。

3.使用open_basedir限制目錄訪問

首先創(chuàng)建一個(gè)VirtualHost,

設(shè)置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/ 中創(chuàng)建一個(gè)test.txt文件,在in.fdipzone.com中創(chuàng)建php執(zhí)行以下代碼

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

因?yàn)閠est.txt不在限定的目錄范圍內(nèi),因此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.設(shè)置open_basedir的性能分析

open_basedir開啟后會(huì)影響I/O,因?yàn)槊總€(gè)調(diào)用的文件都需要判斷是否在限制目錄內(nèi)。

測(cè)試程序,讀取限制目錄內(nèi)同一文件10000次

<?php
// 記錄開始時(shí)間
$starttime = getMicrotime();

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

// 記錄結(jié)束時(shí)間
$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;
}
?>

關(guān)閉open_basedir測(cè)試

run time 137.237072 ms

打開open_basedir測(cè)試

run time 404.207945 ms

開啟open_basedir后,執(zhí)行時(shí)間是關(guān)閉的3倍。

總結(jié):使用open_basedir可以限制程序可操作的目錄和文件,提高系統(tǒng)安全性。但會(huì)影響I/O性能導(dǎo)致系統(tǒng)執(zhí)行變慢,因此需要根據(jù)具體需求,在安全與性能上做平衡。

以上這篇php文件包含目錄配置open_basedir的使用與性能詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論