PHPの開発やサーバーの運用管理を行っていると、必ずと言っていいほど直面するのが設定ファイルであるphp.iniの編集です。
メモリ使用量の上限変更やファイルのアップロードサイズ制限の解除など、多くの場面でこのファイルを操作する必要があります。
しかし、いざ設定を変更しようと思っても「ファイルがどこにあるのかわからない」あるいは「書き換えたはずなのに設定が反映されない」といった問題に悩まされるケースは少なくありません。
これは、使用しているOSの種類やインストールされているWebサーバーの構成、さらには実行環境(CLIとWebブラウザ経由)によって参照されるphp.iniが異なる場合があるためです。
本記事では、主要な環境におけるphp.iniの場所を確実に特定する方法と、設定を正しく反映させるための手順について解説します。
Webサーバー経由でphp.iniの場所を確認する方法
Webサイトとして公開しているプログラムからPHPの設定を確認する場合、最も確実な方法はphpinfo()関数を使用することです。
この方法は、ブラウザを通して実際にPHPがどの設定ファイルを読み込んでいるかを視覚的に確認できるため、サーバー環境に詳しくない場合でもミスが少ないという利点があります。
まず、Webサーバー上の公開ディレクトリに、以下のような内容のPHPファイルを作成します。
ファイル名は任意ですが、ここではinfo.phpとします。
<?php
// PHPの構成情報を出力する
phpinfo();
?>
このファイルをサーバーにアップロードし、ブラウザからアクセス(例: http://example.com/info.php)すると、現在のPHPの詳細な設定情報が表示されます。
この中で注目すべき項目は以下の2点です。
| 項目名 | 説明 |
|---|---|
| Configuration File (php.ini) Path | PHPが設定ファイルを探しに行くディレクトリのパスです。 |
| Loaded Configuration File | 現在実際に読み込まれているphp.iniのフルパスです。 |
「Loaded Configuration File」の項目が(none)となっている場合は、デフォルトの設定が使用されており、特定のphp.iniが読み込まれていません。
その場合は「Configuration File (php.ini) Path」に表示されているディレクトリに設定ファイルを配置する必要があります。
注意点として、確認が終わった後は必ずこのファイルを削除してください。 サーバーの内部情報が外部に公開されたままになると、セキュリティリスクにつながる恐れがあるためです。
コマンドライン(CLI)でphp.iniの場所を確認する方法
サーバーにSSHなどでログインして操作できる場合は、コマンドラインから直接確認するのが効率的です。
ただし、注意が必要なのは「CLI環境」と「Webサーバー環境」で異なるphp.iniが参照されているケースが多いという点です。
CLI環境で読み込まれている設定ファイルを確認するには、以下のコマンドを実行します。
# php.iniの場所を表示するコマンド
php --ini
このコマンドを実行すると、以下のような結果が得られます。
Configuration File (php.ini) Path: /etc/php/8.x/cli
Loaded Configuration File: /etc/php/8.x/cli/php.ini
Scan for additional .ini files in: /etc/php/8.x/cli/conf.d
Additional .ini files parsed: /etc/php/8.x/cli/conf.d/10-opcache.ini,
/etc/php/8.x/cli/conf.d/10-pdo.ini,
...
「Loaded Configuration File」に表示されているパスが、現在CLI環境で使用されているphp.iniです。
もし、特定のキーワードで検索したい場合は、grepコマンドを組み合わせると便利です。
# php -i の出力から php.ini に関する行を抽出する
php -i | grep "php.ini"
このコマンドの出力により、読み込まれているファイルだけでなく、設定ファイルを検索する順番なども把握することができます。
OS・サーバー環境別によくあるphp.iniの設置場所
PHPがインストールされる場所はOSやパッケージ管理システムによって異なります。
ここでは、開発現場で頻繁に利用される主要な環境ごとのデフォルトパスをまとめます。
UbuntuやDebian系Linuxの場合
UbuntuなどのDebian系OSでaptを使用してPHPをインストールした場合、設定ファイルは用途別にディレクトリが分かれています。
- Apacheモジュールとして動作している場合:
/etc/php/X.X/apache2/php.ini - PHP-FPM(Nginxなど)を使用している場合:
/etc/php/X.X/fpm/php.ini - CLI(コマンドライン)の場合:
/etc/php/X.X/cli/php.ini
(※X.XはPHPのバージョン番号が入ります)
このように、同じサーバー内でも実行形態によってファイルが分かれているため、ブラウザ経由の設定を変えたいのにCLI用のファイルを編集してしまうといったミスが起こりやすくなっています。
必ず対象の実行環境に合わせたファイルを編集してください。
CentOSやRHEL系Linuxの場合
CentOS(Stream)やRed Hat Enterprise Linuxでyumやdnfを使ってインストールした場合、比較的シンプルな構造になっています。
- 標準的な場所:
/etc/php.ini
ただし、複数のバージョンを共存させている(Remiリポジトリなどを使用している)場合は、/etc/opt/remi/phpXX/php.iniといった特殊なパスになることもあります。
macOS(Homebrew)の場合
macOSでHomebrewを使用してPHPをインストールした場合、設定ファイルは/usr/localまたは/opt/homebrewの下に配置されます。
- Apple Silicon (M1/M2/M3) Macの場合:
/opt/homebrew/etc/php/X.X/php.ini - Intel Macの場合:
/usr/local/etc/php/X.X/php.ini
Homebrewでアップデートを繰り返していると、古いバージョンのディレクトリが残っていることがあるため、前述のphp --iniコマンドで現在アクティブなパスを確認するのが無難です。
Windows(XAMPP)の場合
Windows環境でXAMPPを利用して開発している場合、インストールディレクトリの中に設定ファイルがまとまっています。
- 標準的な場所:
C:\xampp\php\php.ini
XAMPPのコントロールパネルからもボタン一つでアクセスできるようになっていますが、エディタによっては管理者権限が必要になる場合があるため注意してください。
Docker環境におけるphp.iniの扱い
近年の開発現場で主流となっているDocker環境では、コンテナ内にphp.iniが用意されていない場合があります。
公式のPHPイメージ(Docker Hub)を使用している場合、設定の雛形が以下の場所に用意されています。
/usr/local/etc/php/php.ini-development(開発用)/usr/local/etc/php/php.ini-production(本番用)
これらをコピーしてphp.iniという名前のファイルを作成し、必要に応じて設定を書き換えます。
Docker Composeを利用している場合は、ホスト側のファイルをコンテナ内の/usr/local/etc/php/conf.d/ディレクトリにマウントして、個別の設定を上書きする手法が一般的です。
php.iniの設定を反映させるための手順
php.iniを編集しただけでは、設定は有効になりません。
PHPプロセスが起動時にのみ設定ファイルを読み込むため、変更後は必ずサービスの再起動が必要になります。
Apacheを使用している場合
Apacheのモジュール(mod_php)としてPHPを動かしている場合は、Apache自体を再起動します。
# Ubuntu/Debian系
sudo systemctl restart apache2
# CentOS/RHEL系
sudo systemctl restart httpd
Nginx + PHP-FPMを使用している場合
Nginxを使用している場合、PHPの処理を受け持っているのはPHP-FPMというプロセスです。
したがって、NginxではなくPHP-FPMを再起動する必要があります。
# バージョンに合わせて指定(例: 8.3の場合)
sudo systemctl restart php8.3-fpm
再起動を忘れると、いくらファイルを書き換えても設定が反映されないため、必ずセットで行う習慣をつけましょう。
CLI環境の場合
コマンドラインで実行するPHPプログラムについては、コマンドを実行するたびに設定ファイルが読み込まれます。
そのため、CLIに関してはプロセスの再起動という概念はなく、ファイルを保存した直後の実行から新しい設定が反映されます。
設定が反映されない場合のチェックリスト
もし再起動を行っても設定が反映されない場合は、以下のポイントを確認してください。
編集しているファイルが正しいか
phpinfo()で表示される「Loaded Configuration File」のパスと、自分が編集したファイルのパスが完全に一致しているか再確認してください。構文エラーがないか
php.ini内に記述ミスがあると、その行が無視されたり、デフォルト値に戻ったりすることがあります。特に;(セミコロン)によるコメントアウトの外し忘れには注意が必要です。権限の問題
Webサーバーの実行ユーザーが、編集したphp.iniを読み取る権限を持っているか確認してください。通常、読み取り権限(644など)があれば問題ありません。追加の設定ファイル(conf.d)に上書きされていないか
/etc/php/X.X/fpm/conf.d/などのディレクトリにある個別の設定ファイルが、メインのphp.iniの設定を後から上書きしている場合があります。環境変数や.htaccessで上書きされていないか
Apacheを使用している場合、.htaccess内のphp_value記述が優先されることがあります。
まとめ
PHPの設定を管理する上で、php.iniの場所を正しく把握することは基本でありながら非常に重要です。
OSや実行環境によってパスが異なるため、勘に頼らず「phpinfo()」や「php –ini」といった確実な確認コマンドを使用することが、トラブル解決への近道となります。
設定を変更した際は、必ず該当するサービス(ApacheやPHP-FPM)の再起動を行い、再度phpinfo()等で変更が適用されたことを確認するまでを一連の流れとして行うようにしましょう。
正しい場所を見つけ、正しく反映させる手順をマスターすることで、PHPの開発環境構築やトラブルシューティングの効率は格段に向上します。
