目錄
1.open_basedir介紹
2.open_basedir設定方法
3.使用open_basedir限制目錄存取
4 .設定open_basedir的效能分析
首頁 後端開發 php教程 關於php檔案包含目錄配置open_basedir的使用與效能分析

關於php檔案包含目錄配置open_basedir的使用與效能分析

Jun 08, 2018 pm 06:03 PM
php 效能

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執行下列程式碼

<?phpecho 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中文網。

相關推薦:

關於ajax跨域訪問cookie丟失的解決方法的講解

關於mysql explain中key_len的計算方法講解

如何透過php 使用curl模擬ip與來源進行存取

#

以上是關於php檔案包含目錄配置open_basedir的使用與效能分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles