本篇文章主要介紹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可以限製程式可操作的目錄和文件,提高系統安全性。但會影響I/O效能導致系統執行變慢,因此需要根據具體需求,在安全性與效能上進行平衡。
以上就是本文的全部內容,希望對大家的學習有所幫助。
相關推薦:
PHP 連接資料庫的3種方式
#### ########PHP###引用變數知識詳解###################PHP###的耦合設計模式######## ###################以上是php檔案包含目錄配置open_basedir的使用與效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!