-
include_path
string
-
require、include、
fopen、file、
readfile および file_get_contents
関数がファイルを
探すディレクトリのリストを指定します。フォーマットは、システ
ムの環境変数 PATHと同じです。つまり、UNIXでは
コロンで、Windowsではセミコロンで区切ったディレクトリのリスト
で指定します。
PHP は、インクルードするファイルを探す際に
インクルードパスの各エントリを個別に調べます。
まず最初のパスを調べ、見つからなければ次のパスを調べ、……
というように、ファイルが見つかるか
E_WARNING
あるいは E_ERROR
が発生するまで続けます。インクルードパスを実行時に変更したり設定したりするには
set_include_path を使用します。
例1 Unix include_path
include_path=".:/php/includes"
例2 Windows include_path
include_path=".;c:\php\includes"
インクルードパスに .
(カレントディレクトリ)
を指定すると、相対パス指定によるインクルードができるようになります。
しかし、インクルードのたびに毎回 PHP にカレントディレクトリをチェックさせるよりは、
明示的に include './file'
を指定したほうが効率的です。
注意:
ENV
変数は .ini ファイルの中でもアクセスできます。
たとえば、ホームディレクトリを参照するときに
${LOGIN}
や ${USER}
が使えます。
環境変数はサーバー API の種類によって異なるので、この環境も異なることがあります。
例3 Unix include_path で環境変数 ${USER} を使う例
include_path = ".:${USER}/pear/php"
-
open_basedir
string
-
PHP からアクセスできるファイルを、指定したディレクトリツリーに限定します。
ファイル自身も含みます。
スクリプトから
include や fopen
などでファイルシステムにアクセスしようとしたときに、そのファイルの場所をチェックします。
ファイルが指定したディレクトリツリーの外にある場合は、PHP
はそのファイルへのアクセスを拒否します。
シンボリックリンクの解決も行うので、
シンボリックリンクでこの制限を回避することはできません。
存在しないファイルへのシンボリックリンクは解決できないので、
ファイル名を open_basedir と比較します。
open_basedir は、ファイルシステム関数以外の挙動にも影響を及ぼします。
たとえば MySQL
の設定で mysqlnd
ドライバーを使うようにしている場合に、
LOAD DATA INFILE
は open_basedir の影響を受けます。
PHP の拡張モジュールの多くが、open_basedir
をこのように利用しています。
特別な値 .
は、
スクリプトの作業ディレクトリを表します。これをベースディレクトリとすることもできますが、
少し危険です。スクリプトの作業ディレクトリは
chdir で容易に変更できるからです。
httpd.conf で、(たとえばバーチャルホスト単位で)
open_basedir を無効にすることができます。
その他の設定ディレクティブの場合と
同様に
"php_admin_value open_basedir
none
" のようにします。
Windows では、ディレクトリの区切りはセミコロンとなります。
その他のシステムでは、コロンで区切ります。Apache モジュールでは、
親ディレクトリからの open_basedir
パスを自動的に継承します。
open_basedir で指定する制約は、
ディレクトリ名となります。プレフィックスではありません。
デフォルトでは、すべてのファイルを開くことができます。
注意:
open_basedir の設定を実行時に厳しくすることができます。
これは、open_basedir が php.ini で /www/
と設定されているときに、スクリプト内で
ini_set を使って設定を厳しくして
/www/tmp/
のようにできるということです。
複数のディレクトリを指定するときには、定数 PATH_SEPARATOR
を使えば OS に依存しない記述ができます。
注意:
open_basedir を使用すると、realpath_cache_size は
0
に設定され、結果として realpath キャッシュは disable にされます。
警告
open_basedir
は、追加のセキュリティ機構でしかありません。
つまり、広範囲に適用できるものでは決してないため、
セキュリティを高める必要がある際にそれだけに依存してはいけません。
-
doc_root
string
-
サーバーにおけるPHPの"ルートディレクトリ"です。この値は空で無
い場合のみ使用されます。
PHPがFORCE_REDIRECTを指定してコンパイルされていない場合、
(IIS以外の)WebサーバーのもとでCGIとしてPHPを実行する際には、
doc_rootを指定するべきです。
他の方法としては、後述の
cgi.force_redirect 設定の使用があります。
-
user_ini.cache_ttl
int
-
-
user_ini.filename
string
-
-
user_dir
string
-
PHPファイル用にユーザーのホームディレクトリ
として使用する基本ディレクトリの名前。例えば、
public_html
となります。
-
extension_dir
string
-
動的にロード可能な拡張モジュールを置くディレクトリを
指定します。
絶対パスを指定することを推奨します。
enable_dl と
dl も参照ください。
-
extension
string
-
PHP の開始時に、どの動的ロード可能な拡張モジュールをロードするかを指定します。
-
zend_extension
string
-
PHP の起動時に読み込む動的読み込み可能な Zend 拡張モジュール (たとえば XDebug) の名前。
-
cgi.check_shebang_line
bool
-
CGI 版の PHP が、実行するスクリプトの先頭にある #!
から始まる行
(shebang) をチェックするかどうかを指定します。
同じスクリプトをスタンドアロンと PHP CGI 経由の両方で使用したい場合などに、
この行が必要になるでしょう。このディレクティブを on にしておくと、
CGI 版の PHP はこの行の内容を読み飛ばすようになります。
-
cgi.discard_path
bool
-
これを有効にすると、PHP CGI のバイナリを web ルートのツリーの外部に配置できるようになります。
これで、.htaccess のセキュリティをくぐり抜けてアクセスされる心配がなくなります。
-
cgi.fix_pathinfo
bool
-
本来の PATH_INFO
/PATH_TRANSLATED
サポートをCGIで提供します。 PHPの以前の動作は、
SCRIPT_FILENAME
にPATH_TRANSLATED
を設定するというもので、
PATH_INFO
の定義を理解していませんんでした。
PATH_INFO
に関する詳細については、CGIの仕様を参照ください。
このオプションを1
にすることにより、
PHP CGIはこのパスを仕様にあうように修正します。
ゼロとすると、 PHPは以前と同様に動作します。これは、デフォルトでオンになっています。
PATH_TRANSLATED
ではなく、SCRIPT_FILENAME
を使用するようにスクリプト
を修正する必要があります。
-
cgi.force_redirect
bool
-
cgi.force_redirect は、ほとんどのWebサーバーのもとで CGI として
PHP を実行する際のセキュリティを確保するために必要です。
未定義のままの場合、PHPはデフォルトでこれを on にします。
これを off にする時は、自己責任 の下に
行なってください。
注意:
Windowsユーザー: IIS を使う場合は、このオプションは
必ず off にしなければなりません。
OmniHTTPD や Xitami の場合も同様です。
-
cgi.nph
bool
-
cgi.nph を有効にすると、すべてのリクエストに対して
cgi がステータスコード 200 を返すように強制します。
-
cgi.redirect_status_env
string
-
cgi.force_redirect を on にし、Apache または Netscape
(iPlanet) Webサーバーのもとで実行していない場合、
実行を継続して良いかどうかをPHPが判断するために
環境変数の名前を設定する必要があるかもしれません。
注意:
この変数を設定することにより、セキュリティ上の問題を発生する
場合があります。行うことのリスクをまず把握してください。
-
PHP に、HTTP レスポンスを返す際に、どの形式のヘッダーを使うか
指示します。0 にセットした場合は、Apache やその他の web サーバーで
サポートされている » RFC 3875 Status: ヘッダーを送信します。このオプションの値を
1 にセットした場合は、PHP は » RFC 2616
の仕様に適合した形式のヘッダーを送信します。
このオプションを有効にして、かつ PHP を CGI 環境 (PHP-FPM など) で動かしている場合は、
標準の RFC 2616 形式の HTTP ステータスレスポンスヘッダーを使ってはいけません。そのかわりに
RFC 3875 形式にする必要があります。つまり、 header("HTTP/1.0 404 Not found"); ではなく
header("Status: 404 Not Found"); にしなければいけないということです。
よくわからないときは、この値は 0 のままにしておきましょう。
-
fastcgi.impersonate
string
-
IIS (または WINNT ベースの OS) のもとでの FastCGI は、
クライアントをコールする際にセキュリティトークンを
匿名化する機能をサポートしています。
これにより、IIS がリクエストを処理するセキュリティコンテキストを
定義できるようになります。Apacheのもとで実行される
mod_fastcgi は現在 (2002/03/17) この機能をサポートしていません。
IIS のもとで実行するには、1 に設定してください。
デフォルトは 0 です。
-
fastcgi.logging
bool
-
FastCGI 使用中の SAPI ロギングを有効にします。
デフォルトはロギングが有効となっています。