php.iniの場所を調べたり、実行時にphp.iniを切り替えるなど、php.iniに関する操作をまとめます。
php.iniの場所を調べる
cli版の場合は以下のコマンドで調べられます。
$ php --ini
Configuration File (php.ini) Path: INIファイルのパス
Loaded Configuration File: INIファイルのパス/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
fcgi版の場合はphpinfoで調べられます。
$ php -i | grep php.iniConfiguration File (php.ini) Path INIファイルのパス Loaded Configuration File INIファイルのパス/php.ini
phpがcli版かfcgi版か調べるには以下のコマンドを使います。
$ php -v
↓ CLIの場合は(cli)と表示される。
PHP 7.2.26 (cli) (built: Dec 19 2019 06:45:01) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.26, Copyright (c) 1999-2018, by Zend Technologies
$ php -v
↓ fcgiの場合は(cgi-fcgi)と表示されます。
PHP 7.2.26 (cgi-fcgi) (built: Dec 19 2019 06:45:55)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.26, Copyright (c) 1999-2018, by Zend Technologies
phpコマンド実行時にphp.iniを指定する
phpコマンド実行時にphp.ini
を指定するには-c
オプションを使います。
$ php -c iniファイルのパス --ini
Configuration File (php.ini) Path: /usr/local/apache2/conf/php72 ← もともと設定されているiniファイルのパス
Loaded Configuration File: iniファイルのパス ← 読み込まれたiniファイルのパス
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
PHP: php.ini ディレクティブのリスト – Manual
phpコマンド実行時にiniファイルを無視する
phpコマンドの-n
オプションを使うことで、php.iniの設定を無視することができます。
$ php72 -n --ini
Configuration File (php.ini) Path: /usr/local/apache2/conf/php72
Loaded Configuration File: (none) ← php.iniがロードされなくなっている
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
ディレクトリごとにphp.iniの設定を追加する
CGIまたはFCGI版phpの場合は、ディレクトリごとにphp.ini
の設定を変更できます。
「.user.ini
」という名前でファイルを作り、設定を変更したいディレクトリに配置します。
「.user.ini
」は現在のディレクトリからドキュメントルートへ向かって順に読み込まれます。
.user.iniで設定できる項目は、下記の設定項目リストの「変更可能」がPHP_INI_PERDIR
またはPHP_INI_USER
の項目のみです。
PHP: php.ini ディレクティブのリスト – Manual
.user.ini
に関するマニュアルは以下のページです。
.htaccessでphp.iniの設定を追加する
phpがApacheモジュールとして動いている場合は、httpd.conf
や.htaccess
にphp.iniの設定項目を書くことができます。
この機能を使うにはApacheの設定で「AllowOverride Options」または「AllowOverride All」が設定されている必要があります。
書式は以下のようになります。
php_value 設定項目 値
php_flag 設定項目 on|off
この設定も.user.iniと同様、php.iniの「変更可能」モードがPHP_INI_PERDIR
またはPHP_INI_USER
の物のみです。
.htaccessでのphp.iniの設定に関する詳しい説明は以下です。
phpのソースコード内でphp.iniの設定を変更する
phpのini_set()
関数を使うことで、ソースコード内でphp.ini
の設定を変える事ができます。
php.iniの追加読み込みパスを指定する
php.iniを追加で読み込むパスを指定できます。
phpのコンパイル時に--with-config-file-scan-dir
で追加ディレクトリを指定するか、phpコマンド実行時にPHP_INI_SCAN_DIR
環境変数を設定します。
例えば以下のようにします。
$ PHP_INI_SCAN_DIR=追加ディレクトリ php --ini
Configuration File (php.ini) Path: /usr/local/apache2/conf/php72
Loaded Configuration File: /usr/local/apache2/conf/php72/php.ini
Scan for additional .ini files in: 追加ディレクトリ
Additional .ini files parsed: 追加ディレクトリ/.user.ini,
追加ディレクトリ/myphp.ini
追加ディレクトリにある*.ini
をアルファベッド順に読み込んでいきます。
以上です。
コメント/ピンバック