1.

php.iniの場所を調べる方法|php -iとphpinfo()で確認

編集
この記事の要点
  • php.ini の場所はターミナルで php -i | grep "Loaded Configuration File" または php --ini で確認できる
  • Web から確認するなら phpinfo() 関数を呼んだページの「Loaded Configuration File」行
  • CLI と Web(FPM / Apache module)は別の php.ini を読むことがほとんど — 変更後は対象 SAPI を再起動
  • 読まれなければ「(none)」と表示される — 設置場所が誤っているか SAPI が想定外
  • 追加で読み込まれる conf.d 配下の .iniphp --ini で一覧表示される

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) PathPHP が 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-FPMsystemctl restart php-fpm または service php-fpm reload
Apache mod_phpsystemctl 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 — よく変更される設定値
編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ファイルの場所
  2. コメントアウトの仕方

最近更新/作成されたページ