ソースからコンパイルしたPHPで、php.iniを編集しても設定が反映しない

phpinfoで、「Loaded Configuration File 」の設定がない

ソースからコンパイルしたphpで、/etc/php.ini で設定を変更しても変更内容が反映しません。もちろんApacheの再起動も行っています。
php.ini の場所が違うと思い、php.iniの場所を確認すると「Loaded Configuration File 」設定が以下のようにありませんでした

$ php -i | grep "php.ini"
Configuration File (php.ini) Path => /usr/local/lib

ソースからコンパイルした後に、ソースファイル内にあるサンプルファイルを適切な場所に配置しなかったのが原因です。
「Loaded Configuration File 」を適切に設定する手順を紹介します

php.ini ファイルを適切な場所に配置する

php.ini ファイルが配置されていないので、ソースファイルからサンプルファイルを配置と、「/etc/php.ini」を参照するようにシンボリックリンクを貼る手順は以下のようになります

1.サンプルファイルのphp.iniファイルをコピーします。

phpのソースファイルをダウンロードして解答した場所にあるサンプルファイル(php.ini-production)を、Configuration File (php.ini) Pathのディレクトリにコピーします。

※ 下記では「/usr/local/src/php-x.x.x/」に解答したphpファイルのソースがあります

# php.iniが配置されるパスを確認します
$ php -i | grep "php.ini"
Configuration File (php.ini) Path => /usr/local/lib

# 上記で「/usr/local/lib」が、php.iniの配置ディレクトリとなるので、サンプルファイルをそのディレクトリにコピーします
sudo cp /usr/local/src/php-x.x.x/php.ini-production /usr/local/lib/php.ini

2./etc/php.iniへシンボリックリンクを貼ります

上記で、「/usr/local/lib/php.ini」で配置されたので、Apacheを再起動すれば「/usr/local/lib/php.ini」がphp.ini の場所として反映しますので、「/usr/local/lib/php.ini」のパスでいい場合は、下記のシンボリックリンクの作業は不要です

私の場合は「/etc/php.ini」をphp.ini の場所としていので、/etc/php.iniへシンボリックリンクを貼ります

$ sudo ln -s /usr/local/lib/php.ini /etc/php.ini

3.apacheを再起動します

# CentOS 7以降
$ sudo systemctl restart apache2

# CentOS 6
$ sudo /etc/init.d/httpd2 restart

4.変更内容が正しく反映されているか確認する

# 「Loaded Configuration File」でphp.ini が設定されているか確認します
$ php -i | grep "php.ini"
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini

 

スポンサーリンク

0
0