open_basedir の機能はディレクトリの場所を指定することです。これは、PHP が開くことができるファイルを、ファイル自体を含む指定されたディレクトリ ツリーに制限することを意味し、セーフ モードかどうかには影響されません。
以下は、php.ini の元の説明とデフォルト設定です:
; open_basedir を設定すると、すべてのファイル操作が定義されたディレクトリに制限されます
; 以下のディレクティブは、ディレクトリごとまたは
で使用する場合に最も意味があります。
; 仮想ホストごとの Web サーバー構成ファイルは
です。
; セーフモードがオンかオフかには*影響されません*。
open_basedir = .
open_basedir は、ファイルにアクセスするユーザーのアクティビティ範囲を、指定された領域 (通常はホーム ディレクトリのパス) に制限できます
記号「.」を使用して現在のディレクトリを表すことができます。 open_basedir で指定される制限は、実際にはディレクトリ名ではなくプレフィックスであることに注意してください。
例: 「open_basedir = /dir/user」の場合、ディレクトリ「/dir/user」と「/dir/user1」は両方とも
アクセス可能。したがって、指定したディレクトリのみへのアクセスを制限したい場合は、パス名の末尾にスラッシュを付けます。たとえば、次のように設定します:
"open_basedir = /dir/user/"
を使用します。
コロンで区切られたディレクトリ。 Apache モジュールに適用すると、親ディレクトリの open_basedir パスが自動的に継承されます。
#複数のディレクトリを設定する場合は、以下を参照してください:
php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/
php_admin_value open_basedir /usr/local/apache/htdocs/
#複数のディレクトリを設定する場合は、以下を参照してください:
php_admin_value open_basedir /var/www/html/:/var/tmp/
VirtualHostのopen_basedirの値が設定されていると、柔軟な設定対応が難しくなるため、VirtualHostには設定しないことを推奨します
この制限は php.ini で設定します。たとえば、php.ini で open_basedir = .:/tmp/ を設定できます。この設定は許可されることを意味します。
現在のディレクトリ (つまり、PHP スクリプト ファイルが配置されているディレクトリ) と /tmp/ ディレクトリにアクセスします。
注意: php.ini で設定されたファイルをアップロードするための一時ディレクトリが /tmp/ の場合、open_basedir を設定する必要があります
警告メッセージですが、move_uploaded_file() 関数は /tmp/ ディレクトリにアップロードされたファイルを正常に削除できるかどうかはわかりません
これはバグですか、それとも新機能ですか。