設定ファイル
設定ファイル (php.ini
) は PHP の起動時に読み込まれます。
PHP のサーバーモジュール版では、Web サーバーの起動時に
一度だけ読み込まれます。CGI 版と
CLI 版では、スクリプトが呼び出される度に読み込まれます。
読み込む php.ini
は、これらの場所を順に探します。
- SAPI モジュール特有の場所 (Apache 2 における
PHPIniDir
ディレクティブ、 CGI/CLI 版における-c
コマンドラインオプション、 NSAPI におけるphp_ini
パラメータ) -
PHPRC
環境変数。PHP 5.2.0 より前では、 これは、次に挙げるレジストリキーの後にチェックされていました。 - PHP 5.2.0 以降では、PHP のバージョンごとに別の場所の
php.ini
を使用することができます。レジストリキーの root は、 インストールされたOS や PHP が 32bit や 64bit どちらのビルドかによって変わります。 32bit OS 上の 32bit ビルドの PHP、 もしくは 64bit OS 上の 64bit ビルドの PHP は[(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
を使いますが、 64bit OS 上での 32bit ビルドのPHPは、[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
] を代わりに使います。 ビルドのbit数がOSと同じPHPのインストールの場合、 以下のレジストリキーを順に調べて使用します。[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]
、[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]
および[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]
。 x、y および z はそれぞれ PHP のメジャーバージョン、マイナーバージョン、 リリース番号を表します。 64bit OS の 32bitビルドの PHP では、 以下のレジストリキーを順に調べて使用します。[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]
,[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]
および[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]
x、y および z はそれぞれ PHP のメジャーバージョン、マイナーバージョン、 リリース番号を表します。 これらのキーにIniFilePath
の値が設定されていれば、最初に見つかった場所のphp.ini
を使用します (Windows のみ)。 -
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
または[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
にあるIniFilePath
の値 (Windows のみ)。 - 現在の作業ディレクトリ (CLI を除く)
- Web サーバーのディレクトリ (SAPI モジュールの場合)、 もしくは PHP ディレクトリ (そうでない Windows の場合)
- Windows ディレクトリ (
C:\windows
もしくはC:\winnt
)) (Windows の場合) 、もしくはコンパイル時のオプション--with-config-file-path
php-SAPI.ini
(ここで SAPI は使用する SAPI 名。
たとえば php-cli.ini
や php-apache.ini
)
が存在する場合、
php.ini
の代わりに使用されます。
SAPI 名は php_sapi_name() によって決定されます。
注意:
Apache web サーバーは、スタート時にディレクトリをルート に変更するので、ファイルシステムのルートに
php.ini
が存在する場合、PHP はそれを読もうとします。
php.ini
の中で環境変数を使うには、次のようにします。
例1 php.ini
での環境変数
; 環境変数 PHP_MEMORY_LIMIT を利用します memory_limit = ${PHP_MEMORY_LIMIT}
拡張モジュールに対する php.ini
ディレクティブは、
各拡張モジュールのドキュメントで解説されています。
コア ディレクティブ
(PHP 本体に対するディレクティブ)のリストは付録にまとめられています。
ただし、(更新の都合上)すべての PHP ディレクティブが
本マニュアル中で解説されている訳ではありません。
使っているバージョンの PHP で指定可能なすべてのディレクティブについては、
php.ini
ファイル内に詳細なコメントが記されていますので、参照してください。
もしくは、Git から入手可能な [https://git.php.net/?p=php-src.git;a=blob;f=php.ini-production;hb=HEAD »
最新の php.ini
] も有用でしょう。
例2 php.ini
の例
; 引用符をつけないセミコロン(;)の後のテキストは、すべて無視されます [php] ; セクションマーカ (角括弧の中のテキスト) は無視されます ; 論理値は、次のいずれかで指定します ; true, on, yes ; または false, off, no, none register_globals = off magic_quotes_gpc = yes ; 文字列を二重引用符で括ることも可能です include_path = ".:/usr/local/lib/php" ; バックスラッシュは他の文字と同様に処理されます include_path = ".;c:\php\lib"
PHP 5.1.0 以降、ini ファイル内で既存の ini 変数を参照することが可能です。
例: open_basedir = ${open_basedir} ":/new/dir"
スキャンディレクトリ
PHP の設定で、php.ini
を読んだ後に .ini ファイルを探すディレクトリを指定できます。
これは、コンパイル時のオプション
--with-config-file-scan-dir で設定します。
PHP 5.2.0 以降では、このスキャンディレクトリを実行時に上書きできるようになりました。
環境変数 PHP_INI_SCAN_DIR
で指定します。
複数のディレクトリを指定するには、各プラットフォームのパス区切り文字
(Window や NetWare そして RISC OS の場合は ;
、
その他のプラットフォームの場合は :
。PHP が用いる値は定数
PATH_SEPARATOR
で取得できます)
を用います。PHP_INI_SCAN_DIR
に空文字列が指定された場合は、
PHP のコンパイル時に
--with-config-file-scan-dir
で指定されたディレクトリもスキャンします。
指定されたディレクトリの中にあるファイルの中で、ファイル名が
.ini
で終わるすべてのファイルを、アルファベット順にスキャンします。
読み込まれたファイルの一覧とその順序を調べるには、
php_ini_scanned_files() を呼ぶか、あるいは
--ini オプションつきで PHP を実行します。
PHP のコンパイル時に --with-config-file-scan-dir=/etc/php.d を指定しており、パス区切り文字が : であるものとします $ php PHP は /etc/php.d/*.ini を設定ファイルとして読み込みます。 $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php PHP は /usr/local/etc/php.d/*.ini を設定ファイルとして読み込みます。 $ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php PHP はまず /etc/php.d/*.ini を設定ファイルとして読み込み、 続いて /usr/local/etc/php.d/*.ini も設定ファイルとして読み込みます。 $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php PHP はまず /usr/local/etc/php.d/*.ini を設定ファイルとして読み込み、 続いて /etc/php.d/*.ini を設定ファイルとして読み込みます。
変更履歴
バージョン | 説明 |
---|---|
7.0.0 | ハッシュ記号 (# ) をコメントとみなさないようになりました。
|
5.3.0 | ハッシュ記号 (# ) をコメントとして使ってはいけないようになりました。
もし使うと、廃止予定だという警告を発します。 |
5.2.0 | 環境変数 PHP_INI_SCAN_DIR によって、
configure 時に指定したスキャンディレクトリを上書きできるようになりました。 |
5.1.0 | .ini ファイル内で既存の .ini 変数を参照できるようになりました。 |