タイトル: ファイルの場所
SEOタイトル: php.ini の場所を調べる方法(php -i / phpinfo() / php --ini / SAPI 別の違い / CLI と Web で別物 / 確認コマンド集)
| この記事の要点 |
|
php.ini とは
php.ini は PHP の動作設定を記述するファイルです。タイムゾーン、メモリ制限、エラー表示、拡張モジュール読み込み、文字エンコーディングなど、PHP 全体の挙動を制御します。場所は OS / SAPI / インストール方法によって異なるため、まず正しいファイルパスを特定することが設定変更の第一歩です。
1. CLI から確認する基本コマンド
php -r "echo phpinfo();" | grep "php.ini"
出力例:
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
| 項目 | 意味 |
|---|---|
| Configuration File (php.ini) Path | PHP が php.ini を探すディレクトリ |
| Loaded Configuration File | 実際に読み込んだ php.ini のフルパス(これが本物) |
(none) | 読み込まれていない — 設置場所が誤っている |
2. もっと手軽な php --ini
php --ini
出力例:
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/20-curl.ini,
/etc/php.d/20-gd.ini,
/etc/php.d/30-mysqli.ini
--ini なら追加で読み込まれる conf.d 配下の .ini 一覧まで確認できる、もっとも便利なコマンドです。
3. Web 経由で確認 (phpinfo)
Web サーバ経由の PHP(Apache + mod_php / Nginx + PHP-FPM)が読む php.ini は CLI とは別物のことが多いため、Web 側からも別途確認します。
<?php
// info.php として配置し、ブラウザで開く
phpinfo();
ページ上部の「Loaded Configuration File」に Web SAPI が読んでいる php.ini のフルパスが表示されます。
セキュリティ注意: phpinfo() は環境情報を多く露出するため、本番では確認後すぐ削除してください。
4. SAPI 別の php.ini の例
| SAPI / 環境 | 典型的な場所 |
|---|---|
| CLI (Linux) | /etc/php.ini または /etc/php/<ver>/cli/php.ini |
| PHP-FPM (Debian/Ubuntu) | /etc/php/<ver>/fpm/php.ini |
| Apache mod_php (Debian/Ubuntu) | /etc/php/<ver>/apache2/php.ini |
| RHEL / CentOS | /etc/php.ini(CLI / FPM 共通のこと多) |
| macOS (Homebrew) | /usr/local/etc/php/<ver>/php.ini または /opt/homebrew/etc/php/<ver>/php.ini |
| Windows (XAMPP) | C:\xampp\php\php.ini |
| Windows (公式) | C:\php\php.ini または %SystemRoot%\php.ini |
| Docker 公式 php イメージ | /usr/local/etc/php/php.ini(既定は php.ini-production をコピーして利用) |
5. (none) と表示されるとき
Loaded Configuration File が (none) になる場合、PHP は php.ini を 1 つも読み込んでいません。原因として:
- そのディレクトリに
php.iniファイルが存在しない(雛形はphp.ini-development/php.ini-production) - パーミッションで PHP プロセスが読めない
- SAPI が想定と違うパスを見ている —
Configuration File Pathを確認
6. 雛形ファイルから生成
初期インストール時は php.ini-production / php.ini-development しか入っていないことが多いです。本番なら production をコピーします。
cd /etc # CLI 用なら適切な場所
sudo cp php.ini-production php.ini
sudo chmod 644 php.ini
php --ini # 確認
7. 設定変更を反映させる
| SAPI | 反映方法 |
|---|---|
| CLI | 次回 PHP 実行時に即反映 |
| PHP-FPM | systemctl restart php-fpm または service php-fpm reload |
| Apache mod_php | systemctl restart apache2 / httpd |
php.ini を編集しても再起動しない限り Web は古い値を使い続けます。「反映されない」と悩む典型例です。
8. 追加 .ini ファイル(conf.d)
多くのディストリビューションでは、拡張モジュール毎に小さな .ini ファイルを conf.d / php.d 配下に置く運用です。php --ini で全て一覧できます。
ls /etc/php.d/
# 20-curl.ini 20-gd.ini 30-mysqli.ini ...
cat /etc/php.d/20-curl.ini
# ; Enable curl extension
# extension=curl.so
9. PHP のバージョン特定
同じサーバに複数バージョンの PHP が共存している場合、php コマンドがどのバージョンかを先に確認します。
which php
# /usr/bin/php
php -v
# PHP 8.2.18 (cli) (built: ...)
ls /etc/php/ # Debian 系ならバージョン別ディレクトリ
# 7.4 8.1 8.2
10. 環境変数 PHPRC
環境変数 PHPRC を設定しておくと、PHP はそのパスから php.ini を探します。デプロイ環境のカスタマイズ手段として有用です。
export PHPRC=/opt/myapp/config
php --ini
# Configuration File (php.ini) Path: /opt/myapp/config
FAQ
Q: php.ini を編集しても変わらない
A: 大半は再起動忘れ(FPM / Apache)か、別 SAPI の php.ini を編集してしまっています。phpinfo() で見えるパスを必ず確認してください。
Q: ホスティングサービスで php.ini が編集できない
A: 多くの共用サーバでは .user.ini を Web ルートに置けば一部設定を上書きできます。許可されているディレクティブは契約プラン毎に異なるため、提供元のドキュメントを確認。
Q: Docker で php.ini を差し替えたい
A: 公式 php イメージなら /usr/local/etc/php/php.ini にホスト側ファイルをマウント。あるいは /usr/local/etc/php/conf.d/zz-myapp.ini として追記分だけ差し込むのが Dockerfile 的に綺麗です。
関連
- phpinfo — PHP の設定情報を表示する関数
- php-fpm — FastCGI Process Manager
- .user.ini — ディレクトリ単位の追加設定
- extension — 拡張モジュールの読み込み設定
- memory_limit / upload_max_filesize — よく変更される設定値