【PHP/Linux】php.ini の探し方と修正方法

php.ini が置いてあるパスの探し方

$ php --ini

↑を実行すると、下記のように表示される。

Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File:         (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed:      /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini

上記は、それぞれ次の通りの意味を持っている。

  • Configuration File (php.ini) Path: ここに php.ini を置くと、それが読み込まれる。
  • Loaded Configuration File: 実際に読み込まれている php.ini のパス。

ただし、上記の例では Loaded Configuration File:(None) となっている。
これは、php.ini が本来置かれるべき場所、つまり /usr/local/etc/phpphp.ini が置かれていない、ということを意味している。

php.ini がない場合

PHPをインストールした以降に php.ini をいじった記憶がなければ、 /usr/local/etc/php は次のような感じになっているはず。

$ ls -ltar
total 156
drwxr-xr-x 1 root root  4096 Aug 20 02:29 ..
-rw-r--r-- 1 root root 72528 Aug 20 02:29 php.ini-production
-rw-r--r-- 1 root root 72382 Aug 20 02:29 php.ini-development
drwxr-xr-x 1 root root  4096 Aug 20 02:29 .
drwxr-xr-x 1 root root  4096 Aug 20 02:29 conf.d

つまり、下記の2種類の php.ini のベースファイルが置かれている。

  • php.ini-production
  • php.ini-development

これらのいずれかを php.ini にリネームして使用する、ということである。

php.ini の修正方法

上記で php.ini が置かれている場所を特定し、(php.ini がない場合は)php.ini を作成した。
だが、この php.ini を直接修正することは避けた方が良い。

その代わりに、先ほどの php --ini を実行した結果を再度見てみると、次の行があるはず。

Scan for additional .ini files in: /usr/local/etc/php/conf.d

Scan for additional .ini files in: は、ここに .ini ファイルを作成すれば、そのファイル内に記述した設定項目のみ、大元の php.ini の設定を上書きする、というパスである。

つまり、上記の例では /usr/local/etc/php/conf.d.ini ファイルを作成すれば良いということになるため、例えばここに lang.ini を作成し、下記の2行を追加するだけで、 php.inimbstring.mbstring.language の記述を直接修正した場合と同じ結果を得ることができる。

lang.ini
[mbstring]
mbstring.language = Japanese
執筆日:
本記事のタグ