open_basedir php が開くことができるファイルを、ファイル自体も含め、指定されたディレクトリ ツリーに制限します。プログラムが、たとえば fopen() または file_get_contents() を使用してファイルを開く場合、ファイルの場所がチェックされます。ファイルが指定されたディレクトリ ツリーの外にある場合、プログラムはそのファイルを開くことを拒否します。
このコマンドは、セーフ モードのオンまたはオフの影響を受けません。
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 では: を使用してディレクトリを分割します。
最初に 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 は警告を表示します
警告: file_get_contents(): open_basedir 制限が有効です。ファイル (../test.txt) は許可されたパス内にありません: ( /home/fdipzone/sites/in.fdipzone.com/) /home/fdipzone/sites/in.fdipzone.com/index.php の 3
Open_basedir をオンにすると、呼び出された各ファイルが制限されたディレクトリにあるかどうかを判断する必要があるため、I/O に影響します。
#テスト プログラム。制限付きディレクトリ内の同じファイルを 10,000 回読み取ります。<?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 テストを閉じます 実行時間
137.237072 ミリ秒
open_basedir テストを開く 実行時間
404.207945 ms
open_basedir を開いた後、実行時間はクローズされます3 回。
概要: open_basedir を使用すると、プログラムが操作できるディレクトリとファイルを制限し、システムのセキュリティを向上させることができます。ただし、I/O パフォーマンスに影響し、システムの実行速度が低下するため、特定のニーズに応じてセキュリティとパフォーマンスのバランスを取る必要があります。
php は通常のルールを使用して幅と高さのスタイルを削除します
以上がPHP ファイルには、ディレクトリ構成 open_basedir の使用状況とパフォーマンス分析が含まれていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。