国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-05-04 23:56:29
字體:
供稿:網(wǎng)友

1.open_basedir介紹

open_basedir 將php所能打開的文件限制在指定的目錄樹中,包括文件本身。當(dāng)程序要使用例如fopen()或file_get_contents()打開一個文件時,這個文件的位置將會被檢查。當(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指定的限制實際上是前綴,不是目錄名。

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

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

3.使用open_basedir限制目錄訪問

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

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

因為test.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開啟后會影響I/O,因為每個調(diào)用的文件都需要判斷是否在限制目錄內(nèi)。

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

<?php// 記錄開始時間$starttime = getMicrotime();// 讀取10000次文件for($i=0; $i<10000; $i++){  file_get_contents('test.txt');}// 記錄結(jié)束時間$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測試

run time 137.237072 ms

打開open_basedir測試

run time 404.207945 ms

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

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

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


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 浮山县| 乐至县| 武威市| 南江县| 壶关县| 收藏| 旺苍县| 新津县| 葵青区| 西藏| 鄄城县| 麦盖提县| 浮山县| 广河县| 延长县| 淳化县| 全椒县| 霍州市| 锡林浩特市| 工布江达县| 永新县| 广南县| 宝兴县| 秭归县| 库车县| 靖宇县| 镇雄县| 太和县| 蕉岭县| 新源县| 张家界市| 蕲春县| 广水市| 福清市| 株洲市| 古田县| 伊春市| 澄城县| 太谷县| 罗山县| 甘泉县|