Konfiguration
FPM verwendet die php.ini Syntax für die Konfigurationsdatei - php-fpm.conf, und Pool-Konfigurationsdateien.
Liste globaler php-fpm.conf Direktiven
-
pidstring -
Pfad zur PID Datei. Standardwert: none.
-
error_logstring -
Pfad zur error log Datei. Standardwert: #INSTALL_PREFIX#/log/php-fpm.log. Ist der Wert "syslog", wird das Log an syslogd gesendet anstatt in eine lokale Datei geschrieben zu werden.
-
log_levelstring -
Error log level. Mögliche Werte: alert, error, warning, notice, debug. Standardwert: notice.
-
syslog.facilitystring -
Wird verwendet, um anzugeben, welche Art von Programm die Nachricht protokolliert. Standardwert: daemon.
-
syslog.identstring -
Wird jeder Nachricht vorangestellt. Werden mehrere FPM-Instanzen auf dem selben Server ausgeführt, können Sie den Standardwert so ändern, dass er den gemeinsamen Bedürfnissen entspricht. Standardwert: php-fpm.
-
emergency_restart_thresholdint -
Wenn diese Anzahl an Kindprozessen mit SIGSEGV oder SIGBUS terminiert, innerhalb des durch emergency_restart_interval gesetzten Zeitintervals, dann wird FPM neu starten. Der Wert 0 meint 'Off'. Standardwert: 0 (Off).
-
emergency_restart_intervalmixed -
Zeitinterval, dass von emergency_restart_interval verwendet wird, um zu bestimmen, wann ein zeitversetzter Neustart ausgelöst werden soll. Das kann als Workaround bei zufälligen Fehlern im Shared Memory eines Accelerators nützlich sein. Verfügbare Einheiten: s(econds), m(inutes), h(ours), oder d(ays). Standardeinheit: seconds. Standardwert: 0 (Off).
-
process_control_timeoutmixed -
Zeitlimit der Kindprozesse, um auf eine Reaktion vom Master zu warten. Verfügbare Einheiten: s(econds), m(inutes), h(ours), oder d(ays) Standardeinheit: seconds. Standardwert: 0.
-
process.maxint -
Die Höchstanzahl von Prozessen, die FPM forken wird. Dies wurde konzipiert, um die globale Prozessanzahl zu kontrollieren, wenn dynamisches PM in vielen Pools verwendet wird. Mit Vorsicht zu verwenden. Standardwert: 0.
-
process.priorityint -
Gibt die auf den Master-Prozess (wenn festgelegt) anzuwendende nice(2) Priorität an. Der Wert kann zwischen -19 (höchste Priorität) und 20 (niedrigere Priorität) liegen. Standardwert: nicht gesetzt.
-
daemonizeboolean -
Schickt FPM in den Hintergrund. Setze 'no', um FPM im Vordergrund zu halten und zu debuggen. Standardwert: yes.
-
rlimit_filesint -
Setzt das Ressourcenlimit (rlimit) der offenen Datei-Deskiptoren für den Master-Prozess. Standardwert: Setzt die Ressourcengrenze (rlimit) der offenen Datei-Deskiptoren für den Master-Prozess.
-
rlimit_coreint -
Setzt das Ressourcenlimit (rlimit) der Maximalgröße einer Core-Datei für den Master-Prozess. Standardwert: 0.
-
events.mechanismstring -
Spezifiziert den Ereignismechanismus den FPM verwendet. Die folgenden sind möglich: select, poll, epoll, kqueue (*BSD), port (Solaris). Standardwert: leer (Auto-Erkennung).
-
systemd_intervalint -
Wenn FPM mit systemd Integration kompiliert wurde, gibt dies das Intervall in Sekunden an, in dem Statusberichtsmeldungen an systemd gesendet werden. 0 deaktiviert dies. Standardwert: 10.
Liste der Pool Direktiven
Mit FPM sind mehrere Pools an Prozessen mit unterschiedlichen Einstellungen lauffähig. Nachfolgend finden Sie die Einstellungen die pro Pool verändert werden können.
-
listenstring -
Die Adresse, unter welcher FastCGI-Anfragen angenommen werden. Gültig ist der Syntax: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Diese Einstellunge ist für jeden Pool zwingend notwendig.
-
listen.backlogint -
Setzt listen(2) backlog. Der Wert '-1' meint unbegrenzt. Standardwert: -1.
-
listen.allowed_clientsstring -
Liste mit IPv4 Adressen von FastCGI Clients, denen eine Verbindung gestattet ist. Gleichzusetzen mit der FCGI_WEB_SERVER_ADDRS Umgebungsvariable im originalen PHP FastCGI (5.2.2+). Macht nur Sinn mit einem empfangenden TCP Socket. Die Adressen sind durch Komma zu trennen. Wenn der Wert leer gelassen wird, dann werden Verbindungen von beliebigen IP Adressen akzeptiert. Standardwert: any. IPv6 Adressen sind seit 5.5.20 und 5.6.4 erlaubt.
-
listen.ownerstring -
Setzt die Rechte für den Unix Socket, falls dieser verwendet wird. Unter Linux müssen Lese- und Schreibrechte gesetzt werden, um Verbindungen eines Webservers zu erlauben. Viele BSD-Derivate erlauben Verbindungen unabhängig von den Rechteeinstellungen. Standardwert: user und group werden auf den aktuellen User gesetzt und Mode auf 0660.
-
listen.groupstring -
Siehe listen.owner.
-
listen.modestring -
Siehe listen.owner.
-
listen.acl_usersstring -
Wenn POSIX Zugriffskontrolllisten unterstützt werden, können Sie diese mit dieser Option einstellen. Wenn eingestellt, dann werden listen.owner und listen.group ignoriert. Der Wert ist eine durch Kommas getrennte Liste von Benutzernamen. Seit PHP 5.6.5.
-
listen.acl_groupsstring -
Siehe listen.acl_users. Der Wert ist eine durch Kommas getrennte Liste von Gruppennamen. Seit PHP 5.6.5.
-
userstring -
Der Unix-Benutzer der FPM Prozesse. Diese Einstellung ist zwingend notwendig.
-
groupstring -
Die Unix-Benutzergruppe der FPM Prozesse. Wenn nicht eingestellt, wird als Wert die Gruppe des Standard-Nutzers verwendet.
-
pmstring -
Wähle, wie der Prozess-Manager die Anzahl der Kindprozesse verwaltet. Mögliche Werte: static, ondemand, dynamic. Diese Einstellung ist zwingend notwendig.
static - die Anzahl der Kindprozesse ist fest eingestellt (pm.max_children).
ondemand - die Kindprozesse werden gestartet, sobald sie benötigt werden, im Gegensatz zu dynamic, wo zu Beginn bereits pm.start_servers Prozesse gestartet werden.
dynamic - die Anzahl der Kindprozesse wird dynamisch eingestellt, wobei die folgenden Einstellungen zugrundegelegt werden: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
-
pm.max_childrenint -
Die Anzahl an Kindprozessen, die erstellt werden, wenn pm auf static gesetzt und die maximale Anzahl an Kindprozessen, die erstellt werden, wenn pm auf dynamic gesetzt ist. Diese Einstellung ist zwingend notwendig.
Die Einstellung setzt das Limit für die Anzahl gleichzeitiger Verbindungen. Gleichzusetzen mit der ApacheMaxClients-Direktive mit mpm_prefork und der PHP_FCGI_CHILDREN Umgebungsvariable im originalen PHP FastCGI.
-
pm.start_serversint -
Die Anzahl an Kindprozessen, die beim Start erstellt werden. Wird nur verwendet, wenn pm auf dynamic gesetzt ist. Standardwert: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
-
pm.min_spare_serversint -
Die gewünschte Mindestanzahl an Prozessen. Wird nur genutzt, wenn pm auf dynamic gesetzt ist. Ebenfalls zwingend notwendig.
-
pm.max_spare_serversint -
Die gewünschte Maximalanzahl an Prozessen. Wird nur genutzt, wenn pm auf dynamic gesetzt ist. Ebenfalls zwingend erforderlich.
-
pm.max_requestsint -
Die Anzahl an Anfragen, die ein Kindprozesse ausführt, bevor er neu startet. Das kann hilfreich sein, um Memory Leaks in Bibliotheken von Drittanbietern zu debuggen. Für eine unbegrenzte Anfrageanzahl '0' verwenden. Vergleichbar mit PHP_FCGI_MAX_REQUESTS. Standardwert: 0.
-
pm.status_pathstring -
Die URI, um die FPM Statusseite anzuzeigen. Wenn dieser Wert nicht gesetzt ist, wird kein URI als Statusseite erkannt. Standardwert: none.
-
ping.pathstring -
Die Ping URI, um die Monitoring-Seite von FPM aufzurufen. Wenn dieser Wert nicht gesetzt ist, dann wird keine URI als Ping-Seite erkannt. Das kann dafür verwendet werden, zu testen, ob FPM noch läuft und antwortet. Es sei der Hinweis gestattet, dass der Wert mit einem Forwardslash (/) zu beginnen hat.
-
ping.responsestring -
Diese Direktive kann dazu verwendet werden, die Antwort auf eine Ping-Anfrage zu gestalten. Die Antwort ist vom Typ text/plain mit Antwortcode 200. Standardwert: pong.
-
request_terminate_timeoutmixed -
Das Zeitfenster, in dem die einzelne Anfrage beantwortet sein sollte und falls nicht, der bearbeitende Prozess terminiert wird. Diese Einstellung sollte verwendet werden, wenn die 'max_execution_time' php.ini Einstellung, aus irgendeinem Grund nicht zu einem Scriptabbruch führt.Der Wert '0' steht für 'Off'. Mögliche Einheiten: s(econds)(default), m(inutes), h(ours) oder d(ays). Standardwert: 0.
-
request_slowlog_timeoutmixed -
Das Zeitfenster, in dem die einzelne Anfrage beantwortet sein sollte und falls nicht, ein PHP Backtrace in die Log-Datei für langsame Anfragen geschrieben wird. Der Wert '0' meint 'Off'. Mögliche Einheiten: s(econds)(default), m(inutes), h(ours) oder d(ays). Standardwert: 0.
-
slowlogstring -
Die Log-Datei für langsame Anfragen. Standardwert: #INSTALL_PREFIX#/log/php-fpm.log.slow.
-
rlimit_filesint -
Setzt open file descriptor rlimit für Kind-Prozesse in diesem Pool. Standardwert: Systemeinstellung.
-
rlimit_coreint -
Setzt max core size rlimit für Kind-Prozesse in diesem Pool. Mögliche Werte: 'unlimited' oder ein Integer größer oder gleich 0. Standardwert: Systemeinstellung.
-
chrootstring -
Wechselt (chroot) beim Start in das angegebene Verzeichnis. Der Wert muss eine absolute Pfadangabe sein. Wenn dieser Wert nicht gesetzt ist, wird chroot nicht verwendet.
-
chdirstring -
Wechselt (chdir) beim Start in das angegebene Verzeichnis. Der Wert muss eine absolute Pfadangabe sein. Standardwert: aktuelles Verzeichnis oder / wenn chroot.
-
catch_workers_outputboolean -
Umleitung von Stdout und Stderr in das allgemeine Errorlog. Wenn nicht gesetzt, werden Stdout und Stderr umgeleitet nach /dev/null, entsprechend der FastCGI Spezifikation. Standardwert: no.
-
clear_envboolean -
Löscht die Umgebung in FPM-Arbeitern. Verhindert, dass beliebige Umgebungsvariablen FPM-Arbeiterprozesse erreichen, indem die Umgebung in den Arbeitern gelöscht wird, bevor die Umgebungsvariablen, die in dieser Pool-Konfiguration angegeben sind, hinzugefügt werden. Seit PHP 5.4.27. Standardwert: Yes.
-
security.limit_extensionsstring -
Beschränkt die Dateirweiterungen des Haupt-Skripts, das FPM zu parsen erlaubt. Dies kann Konfigurationsfehler auf der Webserverseite verhindern. Sie sollten FPM nur auf .php Erweiterungen beschränken, um zu verhindern, dass bösartige Nutzter andere Erweiterungen verwenden, um PHP Code auszuführen. Standardwert: .php.
Es ist möglich, zusätzliche Umgebungsvariablen zu setzen und PHP Einstellungen eines bestimmten Pools zu verändern. Dazu sind die nachfolgenden Einstellungen in der Pool-Konfigurationsdatei erforderlich.
Beispiel #1 Übergabe von Umgebungsvariablen und PHP Einstellungen an einen Pool
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
Einstellungen die mit php_admin_value und php_admin_flag gemacht wurden, können nicht durch Verwendung von ini_set() verändert werden.
Ab PHP 5.3.3 können PHP-Einstellungen ebenfalls im Webserver vorgenommen werden.
Beispiel #2 Festlegen von PHP-Einstellungen in nginx.conf
set $php_value "pcre.backtrack_limit=424242"; set $php_value "$php_value \n pcre.recursion_limit=99999"; fastcgi_param PHP_VALUE $php_value; fastcgi_param PHP_ADMIN_VALUE "open_basedir=/var/www/htdocs";
Weil diese Einstellungen an php-fpm als FastCGI Header übergeben werden, sollte php-fpm nicht an eine öffentlich zugängliche Adresse gebunden sein. Andernfalls könnte jeder die PHP Konfigurationsoptionen ändern. Siehe auch listen.allowed_clients.