PHP ファイルには、ディレクトリ構成 open_basedir の使用状況とパフォーマンス分析が含まれています

jacklove
リリース: 2023-04-01 12:28:02
オリジナル
1634 人が閲覧しました

1.Open_basedir の概要

open_basedir php が開くことができるファイルを、ファイル自体も含め、指定されたディレクトリ ツリーに制限します。プログラムが、たとえば fopen() または file_get_contents() を使用してファイルを開く場合、ファイルの場所がチェックされます。ファイルが指定されたディレクトリ ツリーの外にある場合、プログラムはそのファイルを開くことを拒否します。

このコマンドは、セーフ モードのオンまたはオフの影響を受けません。

2.open_basedir 設定方法

1.php.ini に

open_basedir="指定目录"
ログイン後にコピー

を追加します。プログラム

ini_set('open_basedir', '指定目录');
ログイン後にコピー

を使用しますが、この方法は推奨されません

3. Apache の httpd.conf

php_admin_value open_basedir "指定目录"
ログイン後にコピー
ログイン後にコピー

VritualHost のディレクトリ構成httpd.conf

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/”

複数のディレクトリを設定する場合、Windows では; を使用してディレクトリを分割し、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(&#39;../test.txt&#39;);?>
ログイン後にコピー

test.txtは制限されたディレクトリ範囲内にないため、php は警告を表示します
警告: file_get_contents(): open_basedir 制限が有効です。ファイル (../test.txt) は許可されたパス内にありません: ( /home/fdipzone/sites/in.fdipzone.com/) /home/fdipzone/sites/in.fdipzone.com/index.php の 3

4 パフォーマンス分析。 open_basedir の設定

Open_basedir をオンにすると、呼び出された各ファイルが制限されたディレクトリにあるかどうかを判断する必要があるため、I/O に影響します。

#テスト プログラム。制限付きディレクトリ内の同じファイルを 10,000 回読み取ります。

<?php// 记录开始时间$starttime = getMicrotime();// 读取10000次文件for($i=0; $i<10000; $i++){
    file_get_contents(&#39;test.txt&#39;);
}// 记录结束时间$endtime = getMicrotime();
printf("run time %f ms\r\n", ((float)($endtime)-(float)($starttime))*1000);function getMicrotime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());    return (float)$usec + (float)$sec;
}?>
ログイン後にコピー

open_basedir テストを閉じます 実行時間
137.237072 ミリ秒

open_basedir テストを開く 実行時間
404.207945 ms

open_basedir を開いた後、実行時間はクローズされます3 回。


概要: open_basedir を使用すると、プログラムが操作できるディレクトリとファイルを制限し、システムのセキュリティを向上させることができます。ただし、I/O パフォーマンスに影響し、システムの実行速度が低下するため、特定のニーズに応じてセキュリティとパフォーマンスのバランスを取る必要があります。

この記事では、ディレクトリ構成を含む php ファイルである open_basedir の使用法とパフォーマンス分析について説明します。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。

関連する推奨事項:

php は通常のルールを使用して幅と高さのスタイルを削除します

mysql テーブル データの行と列の変換方法

nginx 設定ファイルをすばやく表示する方法
#

以上がPHP ファイルには、ディレクトリ構成 open_basedir の使用状況とパフォーマンス分析が含まれていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート