phpの設定ファイル「php.ini」に関する操作まとめ

PHP プログラミング

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.ini
Configuration 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に関するマニュアルは以下のページです。

PHP: .user.ini ファイル – Manual

.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: 設定を変更するには – Manual

phpのソースコード内でphp.iniの設定を変更する

phpのini_set()関数を使うことで、ソースコード内でphp.iniの設定を変える事ができます。

PHP: ini_set – Manual

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をアルファベッド順に読み込んでいきます。

PHP: 設定ファイル – Manual

以上です。

コメント/ピンバック

タイトルとURLをコピーしました