設定
FPM では、php.ini 形式の構文の設定ファイル php-fpm.conf と、プール設定ファイルを使います。
php-fpm.conf のグローバル設定項目
-
pid
string -
PID ファイルへのパス。デフォルト値: なし
-
error_log
string -
エラーログファイルへのパス。デフォルト値:
#INSTALL_PREFIX#/log/php-fpm.log
"syslog" と設定すると、ログをローカルファイルに書き出すのではなく、syslogd に送信します。 -
log_level
string -
エラーログのレベル。使用可能な値: alert, error, warning, notice, debug、デフォルト値: notice
-
log_limit
int -
1024文字以上のログメッセージを、 改行せずにロギングできる文字数の上限。 デフォルト値: 1024 PHP 7.3.0 以降で利用可能
-
log_buffering
bool -
追加のバッファリングを行わずに実験的なロギングを行う デフォルト値: yes PHP 7.3.0 以降で利用可能
-
syslog.facility
string -
メッセージを記録するプログラムの種別。 デフォルト値: daemon
-
syslog.ident
string -
すべてのメッセージの先頭に付加する内容。 複数の FPM インスタンスを同一サーバー上で実行する場合には、 デフォルト値を変更すれば区別できるようになります。 デフォルト値: php-fpm
-
emergency_restart_threshold
int -
emergency_restart_interval
で設定された間隔で この数以上の子プロセスが SIGSEGV あるいは SIGBUS で終了した場合に FPM は再起動します。0 は 'オフ' を意味します。デフォルト値: 0 (オフ) -
emergency_restart_interval
mixed -
emergency_restart_interval が緩やかな再起動をいつ実行するかを決めるときに使う間隔。 これは、アクセラレータの共有メモリが壊れてしまったときの回避策として有用です。 使用可能な単位: s(秒), m(分), h(時間) あるいは d(日)、 デフォルトの単位: 秒、デフォルト値: 0 (オフ)
-
process_control_timeout
mixed -
子プロセスが、マスタからのシグナルの反応を待つ最大時間。 使用可能な単位: s(秒), m(分), h(時間) あるいは d(日)、 デフォルトの単位: 秒、デフォルト値: 0
-
process.max
int -
FPM がフォークするプロセスの最大数。 多数のプール内で動的な PM を使う場合に、全体のプロセス数を制御するために用意されたものです。 気をつけて使うようにしましょう。 デフォルト値: 0
-
process.priority
int -
マスタープロセスに適用する nice(2) 値。 -19 (優先度最高) から 20 (優先度最低) までの値を指定します。 デフォルト値: 未設定
-
daemonize
bool -
FPM をバックグラウンドに送る。'no' にすると デバッグ用に FPM をフォアグラウンドに置き続けます。 デフォルト値: yes
-
rlimit_files
int -
マスタープロセス用の、オープン時のファイル記述子の rlimit。 デフォルト値: システムで定義されている値
-
rlimit_core
int -
マスタープロセス用の、最大コアサイズの rlimit。 デフォルト値: 0
-
events.mechanism
string -
FPM が利用するイベントメカニズム。 select、pool、epoll、kqueue (*BSD)、port (Solaris) が利用可能。 デフォルト値: 未設定 (自動検出)
-
systemd_interval
int -
FPM を systemd 統合込みでビルドした場合に、 ヘルスチェックのレポートを systemd に送る間隔 (秒単位)。 0 にすると、無効化されます。 デフォルト値: 10
プール一覧の項目
FPM を使うと、複数のプロセスプールをそれぞれ別の設定で実行することができます。 プール単位での設定を行う項目を以下に示します。
-
listen
string -
FastCGI リクエストを受け入れるアドレス。 'ip.add.re.ss:port', 'port', '/path/to/unix/socket' 形式の構文が使えます。 このオプションは、各プール単位で必須となります。
-
listen.backlog
int -
listen(2) のバックログを設定します。
-1
はBSD 系のシステムでは最大値を意味します。 デフォルト値:-1
(FreeBSD や OpenBSD) または511
(Linux やその他のプラットフォーム) -
listen.allowed_clients
string -
接続を許可されている FastCGI クライアントの IPv4 または IPv6 アドレス一覧。オリジナル版 PHP FastCGI (5.2.2+) における環境変数 FCGI_WEB_SERVER_ADDRS と同じです。 tcp でリスンするソケットに対してのみ意味をなします。 書くアドレスはカンマ区切りで指定します。この値を空にしておくと、任意の ip アドレスからの接続を許可します。 デフォルト値: 任意の ip アドレスを許可。
-
listen.owner
string -
unix ソケットを使う場合に、そのパーミッションを設定します。Linux では、 読み書きアクセス権限を設定しないとウェブサーバーからの接続を受け付けることができません。 多くの BSD 由来のシステムでは、パーミッションにかかわらず接続を受け付けることができます。 デフォルト値: ユーザーとグループは実行しているユーザーと同じ、モードは 0660
-
listen.group
string -
listen.owner
を参照ください。 -
listen.mode
string -
listen.owner
を参照ください。 -
listen.acl_users
string -
POSIX の Access Control List をサポートしている場合は、このオプションでそれを指定できます。 これを設定した場合は、
listen.owner
およびlisten.group
は無視されます。 値には、ユーザー名をカンマ区切りのリスト形式で指定します。 -
listen.acl_groups
string -
listen.acl_users
を参照。 グループ名を、カンマ区切りのリスト形式で指定します。 -
user
string -
FPM プロセスの unix ユーザー。このオプションは必須です。
-
group
string -
FPM プロセスの unix グループ。未設定の場合は、デフォルトのユーザーのグループを使います。
-
pm
string -
プロセスマネージャが子プロセスの数を制御する方法を選択します。 使用可能な値:
static
,ondemand
,dynamic
このオプションは必須です。static
- 子プロセスの数は固定 (pm.max_children
) です。ondemand
- プロセスを必要に応じて立ち上げます。 dynamic とは対照的に、リクエストされるとpm.start_servers
で指定しただけサービスを開始します。dynamic
- 子プロセスの数は、pm.max_children
、pm.start_servers
、pm.min_spare_servers
、pm.max_spare_servers
の内容に基づいて動的に設定されます。 -
pm.max_children
int -
pm
がstatic
の場合は作成される子プロセスの数、pm
がdynamic
の場合は作成される子プロセスの最大数。 このオプションは必須です。このオプションは、同時に処理できるリクエストの最大数を設定します。 mpm_prefork での ApacheMaxClients ディレクティブや、 オリジナル版の PHP FastCGI における環境変数 PHP_FCGI_CHILDREN と同じです。
-
pm.start_servers
int -
起動時に作成される子プロセスの数。
pm
がdynamic
の場合にのみ使います。デフォルト値: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 -
pm.min_spare_servers
int -
アイドル状態のサーバープロセス数の最小値。
pm
がdynamic
の場合にのみ使います。 また、この場合には必須となります。 -
pm.max_spare_servers
int