web-dev-qa-db-ja.com

php.iniの場所を明示的にphp-fpmに渡す必要がありますか?

開始時に_php.ini_に明示的に渡さない場合、_php-fpm_が使用されないという奇妙な問題が発生します。

これは私が使用しているアップスタートスクリプトです。

_start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [016]

pre-start script
    mkdir -p /run/php
end script


expect fork
respawn
exec /usr/local/php/sbin/php-fpm --fpm-config /etc/php/php-fpm.conf
_

PHPが上記で開始されている場合、Configuration File (php.ini) Pathに含まれていても、私の_php.ini_は使用されません。

これはphpinfo()の関連部分です:

_Configuration File (php.ini) Path           /etc/php/
Loaded Configuration File                   (none)
Scan this dir for additional .ini files     (none)
Additional .ini files parsed                (none) 
_

Upstartスクリプトの最後の行を変更して_php-fpm_を_php.ini_に明示的にポイントする場合:

_exec /usr/local/php/sbin/php-fpm --fpm-config /etc/php/php-fpm.conf -c /etc/php/php.ini
_

次に、_php.ini_が読み込まれていることがわかります。

_Configuration File (php.ini) Path           /etc/php/
Loaded Configuration File                   /etc/php/php.ini
Scan this dir for additional .ini files     (none)
Additional .ini files parsed                (none) 
_

これはなぜですか?これはphp-fpmの癖ですか?


マイナーアップデート:これは、_apt-get_を使用してインストールされたphp5-fpmの問題でもあるようです。

次のコマンドを実行して、Ubuntu Server 12.04仮想マシンにテストインストールしました。

_Sudo apt-get install nginx php5-fpm
_

PHP-FPMとnginxはインストール後に開始され、すべてが正常に見えました。次に、nginxの構成でphpの設定のコメントを外し、テストphpinfo()ファイルを配置してPHPの設定を検査しました。

関連するビットは次のとおりです。

_Configuration File (php.ini) Path           /etc/php5/fpm
Loaded Configuration File                   (none)
Scan this dir for additional .ini files     /etc/php5/fpm/conf.d
Additional .ini files parsed                /etc/php5/fpm/conf.d/10-pdo.ini 
_

_php.ini_もロードされていないことに注意しました。ただし、_/etc/php5/fpm_にアクセスすると、_php.ini_が存在することがわかります。また、PHP-FPMの起動スクリプトを確認したところ、iniファイルをPHPにリンクするために_-c_パラメータが使用されていませんでした。これは、php.iniがPHP-FPMによって自動的にロードされることを期待する人々にとって、混乱を招く可能性があります。

6
F21

いいえ、開始時にphp.iniファイルをphp-fpmに明示的に渡す必要はありません。

まず、php5-fpmを使用してインストールされたapt-getを扱います。サーバーを再起動すると、php.iniが読み込まれました。奇妙でしたが、うまくいきました。

私の質問に戻ります。

PHP with --with-config-file-path=/etc/php/をコンパイルしたことに注意してください。この問題は、--with-config-file-pathを使用するときにフォルダーに末尾のスラッシュを追加したことが原因です。

私の場合、make cleanを実行して、古いコンパイル済みバイナリを削除しました。次に、--with-config-file-path=/etc/phpを使用してconfigureを実行しました(フォルダーの末尾にスラッシュがないことに注意してください)。次にmakemake install

これが完了すると、php.iniスイッチを使用してphp-fpmに渡すかどうかに関係なく、/etc/php-cが自動的に読み込まれます。

1
F21