PHP を Apache モジュールとして使用している場合、Apache 設定ファイル (例、httpd.conf) もしくは .htaccess ファイルにディレクティブを記述することで、PHP の設定の変更を行うことが 可能です。このようにして設定変更を行うには、"AllowOverride Options" もしくは "AllowOverride All" 権限が必要です。
Apache 設定ファイルから PHP の設定を変更するには、
以下に示す Apache ディレクティブを使用します。
各設定オプションの変更の可否 (PHP_INI_ALL
,
PHP_INI_PERDIR
, または PHP_INI_SYSTEM
)
については、付録
php.ini ディレクティブのリスト
を参照してください。
php_value
name
value
指定した設定オプションに値を設定します。変更の可否が、
PHP_INI_ALL
もしくは
PHP_INI_PERDIR
である設定オプションに対し利用できます。
セット済みの値をクリアしたい場合は、none
を
値として使用してください。
注意: 論理値を設定する場合には
php_value
を使用しないでください。代わりに、php_flag
(下記参照)を使用する必要があります。
php_flag
name
on|off
設定オプションに論理値を設定するために使用します。変更の可否が、
PHP_INI_ALL
もしくは
PHP_INI_PERDIR
である設定オプションで利用できます。
php_admin_value
name
value
指定した設定オプションに値を設定します。このディレクティブは、.htaccess
ファイルでは利用できません。また、
php_admin_value
で設定された設定オプションの値は、.htaccess
や ini_set() では上書きできません。
セット済みの値をクリアしたい場合は、none
を値として使用してください。
php_admin_flag
name
on|off
設定オプションに論理値を設定するために使用します。 このディレクティブは、.htaccess ファイルでは利用できません。 php_admin_value で設定された設定オプションの値は、.htaccess や ini_set() では上書きできません。
例1 Apache 設定の例
<IfModule mod_php5.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on </IfModule> <IfModule mod_php4.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on </IfModule>
PHP 定数は PHP 以外では使用できません。たとえば、
httpd.conf の中で
error_reporting
オプションを設定しようとして E_ALL
や E_NOTICE
のような PHP 定数を使用することは
できません。これらは意味を有さないため、
0 と評価されてしまいます。
代わりに、対応するビットマスク値を使用してください。
php.ini の中では、これらの PHP 定数を使用することができます。
Windows 上で PHP を実行している場合、Windows レジストリを使用して設定値を
ディレクトリ毎に変更することができます。
設定値は、レジストリキー HKLM\SOFTWARE\PHP\Per Directory Values
に保存され、そのサブキーがパス名となります。例えば、ディレクトリ
c:\inetpub\wwwroot
に対する設定値は、 キー
HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot
に保存されます。ディレクトリに対する設定は、そのディレクトリ、
およびそのサブディレクトリで実行されるすべてのスクリプトで有効となります。
PHP 設定オプションのディレクティブを名前とする文字列値をキーに登録してください。
また、値のデータに PHP 定数を記述しても解釈されませんので、注意してください。
しかし、PHP_INI_USER
で変更可能な設定値はこの方法で設定することが可能ですが、
PHP_INI_PERDIR
である設定値は設定できません。
なぜなら、これらの設定値はリクエストがあるたびに読み直されるからです。
どのように PHP を実行しているかに係わらず、ini_set() 関数を 用いて、スクリプトの実行時に一部のオプションの設定値を変更することができます。詳細は、 ini_set() 関数のリファレンスを参照してください。
使用しているシステムにおける現在のオプション設定値の完全なリストを得たい場合は、 phpinfo() 関数を実行し、出力された結果を参照してください。 また、ini_get() 関数または get_cfg_var() 関数を用いて、個々のオプションの設定値にアクセスすることも可能です。