正しいphp.iniファイルを探す

現在、正しいphp.iniファイルを探して編集し、変更が反映されるようにapacheを再起動しようとしているのですが、なかなかうまくいきません。

3つの異なるphp.iniファイルを見つけました(なぜ3つなのかは不明)。 ファイルの見つけ方は以下の通りです。

$ sudo find / -name php.ini
/etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini

.... もやりました。

$ sudo php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

すべて(念のため)希望の設定に変更しました。

を使ってapacheを再起動しました。

sudo service apache2 restart

結果は・・・。

* Restarting web server apache2

ページをリロードすると、php.iniファイルが更新されていないことがわかりました。

私がこれを知っているのは

echo ini_get('post_max_size');

20Mに変更されたはずなのに、まだ2Mしかなかった。

コンピュータを再起動すれば、apacheサーバが停止して、php.iniファイルが正しい設定で再読み込みされるのではないかと思い、再起動を試みましたが、残念ながら失敗しました。

何か別のphp.iniファイルが邪魔をしている可能性はないでしょうか?

ソリューション

ここにある3つのファイルは、それぞれ異なる用途のためのものです。

etc/php/5.6/cli/php.iniは CLI の PHP プログラム用で、ターミナルでphp` を実行することで見つけることができます。

etc/php/5.6/cgi/php.ini`は、php-cgiシステム用のファイルで、この設定では特に使用していません。

etc/php/5.6/apache2/php.ini`は、Apacheが使用するPHPプラグイン用です。 Apacheの設定に変更を適用するためには、こちらを編集する必要があります。

etc/php/5.6/fpm/php.iniphp5-fpmプロセッサです。これは fastcgi と互換性のある 'wrapper' で、PHP の処理 (NGINX からphp5-fpm` への引き渡しなど) を行うもので、システム上の独立したプロセスとして動作します (Apache の PHP プラグインとは異なります)。

Ubuntuのバージョンが16.04以下の場合、/etc/php/5.6//etc/php/7.0//etc/php/7.1/などのパスは、/etc/php5/などに置き換えられます。それ以外は、これらのパスは正確なままです。 あなたの環境に合わせて、5.6や数字を、あなたの環境に存在する実際のバージョンフォルダに置き換えてください。

解説 (2)

このスニペットを含むスクリプトをブラウザで実行してみてください <?php phpinfo(); ?> そして、Loaded Configuration Fileのようなものを検索してみてください。このエントリは、PHPがApacheサーバーで使用するphp.iniを指定します。

解説 (0)

php7 ubuntu 16.4の場合

/etc/php/7.0/apache2/php.ini
解説 (2)