Konfiguration

FPM verwendet die php.ini-Syntax für die Konfigurationsdatei - php-fpm.conf - und Pool-Konfigurationsdateien.

Liste globaler php-fpm.conf-Direktiven

pid string

Pfad zur PID-Datei. Standardwert: none.

error_log string

Pfad zur Fehlerprotokoll-Datei. Standardwert: #INSTALL_PREFIX#/log/php-fpm.log. Ist der Wert "syslog", wird das Protokoll an syslogd gesendet anstatt in eine lokale Datei geschrieben zu werden.

log_level string

Grad der Fehlerprotokollierung. Mögliche Werte: alert, error, warning, notice, debug. Standardwert: notice.

log_limit int

Obergrenze für die protokollierten Zeilen, die es ermöglicht, Nachrichten, die länger als 1024 Zeichen sind, ohne Zeilenumbruch zu protokollieren. Standardwert: 1024. Verfügbar von PHP 7.3.0 an.

log_buffering bool

Experimentelles Protokollieren ohne zusätzliche Pufferung. Standardwert: yes. Verfügbar von PHP 7.3.0 an.

syslog.facility string

Wird verwendet, um anzugeben, welche Art von Programm die Nachricht protokolliert. Standardwert: daemon.

syslog.ident string

Wird jeder Nachricht vorangestellt. Werden mehrere FPM-Instanzen auf demselben Server ausgeführt, können Sie den Standardwert so ändern, dass er den allgemeinen Anforderungen entspricht. Standardwert: php-fpm.

emergency_restart_threshold int

Wenn sich diese Anzahl von Kindprozessen innerhalb des durch emergency_restart_interval gesetzten Zeitintervalls mit SIGSEGV oder SIGBUS beendet, dann startet FPM neu. Der Wert 0 bedeutet 'Off'. Standardwert: 0 (Off).

emergency_restart_interval mixed

Zeitintervall, das von emergency_restart_interval verwendet wird, um zu bestimmen, wann ein ordnungsgemäßer Neustart ausgelöst werden soll. Das kann nützlich sein, um zufällige Störungen im gemeinsamen Speicher eines Beschleunigers zu umgehen. Verfügbare Einheiten: s(econds), m(inutes), h(ours), oder d(ays). Standardeinheit: seconds. Standardwert: 0 (Off).

process_control_timeout mixed

Zeitlimit für Kindprozesse, die auf eine Reaktion vom Hauptprozess (Master) warten. Verfügbare Einheiten: s(econds), m(inutes), h(ours), oder d(ays). Standardeinheit: seconds. Standardwert: 0.

process.max int

Die Höchstanzahl an Prozessen, die FPM forkt. Dies wurde entwickelt, um die globale Anzahl an Prozessen zu kontrollieren, wenn in vielen Pools dynamisches PM verwendet wird. Mit Vorsicht zu verwenden. Standardwert: 0.

process.priority int

Gibt die auf den Hauptrozess anzuwendende nice(2)-Priorität an (nur falls festgelegt). Der Wert kann zwischen -19 (höchste Priorität) und 20 (niedrigste Priorität) liegen. Standardwert: nicht gesetzt.

daemonize bool

Schickt FPM in den Hintergrund. Bei 'no' bleibt FPM für das Debugging im Vordergrund. Standardwert: yes.

rlimit_files int

Setzt das Ressourcenlimit (rlimit) der offenen Datei-Deskiptoren für den Hauptrozess. Standardwert: Systemeinstellung.

rlimit_core int

Setzt das Ressourcenlimit (rlimit) der Maximalgröße einer Core-Datei für den Hauptprozess. Standardwert: 0.

events.mechanism string

Spezifiziert den Ereignismechanismus, den FPM verwendet. Die folgenden sind möglich: select, poll, epoll, kqueue (*BSD), port (Solaris). Standardwert: leer (automatische Erkennung).

systemd_interval int

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 können mehrere Pools von Prozessen mit unterschiedlichen Einstellungen betrieben werden. Die nachfolgenden Einstellungen können pro Pool angepasst werden.

listen string

Die Adresse, unter welcher FastCGI-Anfragen angenommen werden. Gültig sind die Syntaxen: 'ip.add.re.ss:port', 'port' und '/path/to/unix/socket'. Diese Einstellung ist für jeden Pool zwingend notwendig.

listen.backlog int

Stellt die listen(2)-Warteschlange (Backlog) ein. Der Wert -1 bedeutet das Maximum auf BSD-Systemen. Standardwert: -1 (FreeBSD oder OpenBSD) oder 511 (Linux und andere Plattformen).

listen.allowed_clients string

Liste mit IPv4- oder IPv6-Adressen von FastCGI-Clients, denen eine Verbindung gestattet ist. Entspricht der Umgebungsvariable FCGI_WEB_SERVER_ADDRS im originalen PHP-FastCGI (5.2.2+). Dies ist nur bei einem empfangenden TCP-Socket sinnvoll. Die Adressen sind durch Komma zu trennen. Wenn der Wert leer gelassen wird, dann werden Verbindungen von beliebigen IP-Adressen akzeptiert. Standardwert: nicht festgelegt (jede IP-Adresse wird akzeptiert).

listen.owner string

Setzt die Berechtigungen für den Unix-Socket, falls dieser verwendet wird. Unter Linux müssen Lese- und Schreibberechtigungen gesetzt werden, um Verbindungen eines Webservers zu erlauben. Viele BSD-Derivate erlauben Verbindungen unabhängig von den Berechtigungen. Standardwert: user und group werden auf den aktuellen Benutzer gesetzt und Mode auf 0660.

listen.group string

Siehe listen.owner.

listen.mode string

Siehe listen.owner.

listen.acl_users string

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.

listen.acl_groups string

Siehe listen.acl_users. Der Wert ist eine durch Kommas getrennte Liste von Gruppennamen.

user string

Der Unix-Benutzer der FPM-Prozesse. Diese Einstellung ist zwingend notwendig.

group string

Die Unix-Benutzergruppe der FPM-Prozesse. Wenn nicht eingestellt, wird als Wert die Gruppe des Standard-Benutzers verwendet.

pm string

Legt fest, 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 zugrunde gelegt werden: pm.max_children, pm.start_servers, pm.min_spare_servers und pm.max_spare_servers.

pm.max_children int

Die Anzahl an Kindprozessen, die erstellt werden, wenn pm auf static gesetzt ist, und die maximale Anzahl an Kindprozessen, die erstellt werden, wenn pm auf dynamic gesetzt ist. Diese Einstellung ist zwingend notwendig.

Diese Einstellung legt das Limit für die Anzahl gleichzeitiger Verbindungen fest. Gleichzusetzen mit der ApacheMaxClients-Direktive mit mpm_prefork und der Umgebungsvariable PHP_FCGI_CHILDREN im originalen PHP-FastCGI.

pm.start_servers int

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_servers int

Die gewünschte Mindestanzahl an Serverprozessen im Leerlauf. Wird nur verwendet, wenn pm auf dynamic gesetzt ist. Ebenfalls zwingend notwendig.

pm.max_spare_servers int

Die gewünschte Maximalanzahl an Serverprozessen im Leerlauf. Wird nur verwendet, wenn pm auf dynamic gesetzt ist. Ebenfalls zwingend erforderlich.

pm.max_spawn_rate int

Die Anzahl der gleichzeitig zu erzeugenden Kindprozesse. Wird nur verwendet, wenn pm auf dynamic gesetzt ist. Standardwert: 32

pm.process_idle_timeout mixed

Die Anzahl der Sekunden, nach der ein Prozess im Leerlauf beendet wird. Wird nur verwendet, wenn pm auf ondemand gesetzt wurde. Verfügbare Einheiten: s (Sekunden)(Standardwert), m (Minuten), h (Stunden) oder d (Tage). Standardwert: 10s.

pm.max_requests int

Die Anzahl der Anfragen, die ein Kindprozess ausführt, bevor er neu startet. Das kann hilfreich sein, um Speicherlecks in Bibliotheken von Drittanbietern zu umgehen. Für eine unbegrenzte Anzahl Anfragen '0' verwenden. Vergleichbar mit PHP_FCGI_MAX_REQUESTS. Standardwert: 0.

pm.status_listen string

Die Adresse, an der FastCGI-Statusanfragen angenommen werden sollen. Hiermit wird ein neuer unsichtbarer Pool erstellt, der Anfragen eigenständig bearbeiten kann. Dies ist nützlich, wenn der Hauptpool mit lang laufenden Anfragen beschäftigt ist, da es trotzdem möglich ist, die FPM-Statusseite zu erhalten, bevor diese abgeschlossen sind. Die Syntax ist die gleiche wie bei der Direktive listen. Standardwert: none

pm.status_path string

Der URI, um die FPM-Statusseite anzuzeigen. Dieser Wert muss mit einem führenden Schrägstrich (/) beginnen. Wird dieser Wert nicht angegeben, wird kein URI als Statusseite erkannt. Standardwert: none.

ping.path string

Der Ping-URI, um die Monitoring-Seite von FPM aufzurufen. Wenn dieser Wert nicht gesetzt ist, dann wird kein URI als Ping-Seite erkannt. Das kann dafür verwendet werden, um zu testen, ob FPM noch läuft und antwortet. Es ist zu beachten, dass der Wert mit einem Forwardslash (/) beginnen muss.

ping.response string

Diese Direktive kann dazu verwendet werden, um die Antwort auf eine Ping-Anfrage anzupassen. Die Antwort ist vom Typ text/plain mit dem Antwortcode 200. Standardwert: pong.

process.priority int

Legt die nice(2)-Priorität fest, die auf den Worker-Prozess angewendet wird (falls angegeben). Der Wert liegt im Bereich von -19 (höchste Priorität) bis 20 (niedrigste Priorität). Standardwert: nicht gesetzt

process.dumpable bool

Setzt das "process dumpable"-Flag (PR_SET_DUMPABLE prctl), selbst wenn der Benutzer oder die Gruppe des Prozesses sich vom Benutzer des Hauptprozesses unterscheidet. Dies erlaubt es dem Pool-Benutzer, Prozess-Coredumps zu erstellen und den Prozess mit ptrace zu untersuchen. Standardwert: no. Seit PHP 7.0.29, 7.1.17 und 7.2.5.

prefix string

Legt das Prefix für die Pfad-Validierung fest.

request_terminate_timeout mixed

Die Zeitbeschränkung für die Bearbeitung einer einzelnen Anfrage, nach der der Worker-Prozess beendet wird. Diese Einstellung sollte verwendet werden, wenn die ini-Option 'max_execution_time' aus irgendeinem Grund nicht zu einem Skriptabbruch 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_terminate_timeout_track_finished bool

Die Zeitbeschränkung, die durch request_terminate_timeout festgelegt wird, wird nicht aktiviert nach fastcgi_finish_request oder wenn die Anwendung beendet ist und interne Shutdown-Funktionen aufgerufen werden. Mit dieser Direktive kann die Wartezeitbeschränkung auch in solchen Fällen uneingeschränkt angewendet werden. Standardwert: no. Seit PHP 7.3.0.

request_slowlog_timeout mixed

Die Zeitbeschränkung für die Bearbeitung einer einzelnen Anfrage, nach der ein PHP-Backtrace in die 'slowlog'-Datei (Log-Datei für langsame Anfragen geschrieben wird. Der Wert '0' steht für 'Off'. Mögliche Einheiten: s(econds)(default), m(inutes), h(ours) oder d(ays). Standardwert: 0.

request_slowlog_trace_depth int

Die Ausführlichkeit des Slowlog-Log-Stacktrace. Standardwert: 20. Seit PHP 7.2.0.

slowlog string

Die Log-Datei für langsame Anfragen. Standardwert: #INSTALL_PREFIX#/log/php-fpm.log.slow.

rlimit_files int

Legt das rlimit für offene Dateideskriptoren der Kindprozesse in diesem Pool fest. Standardwert: Systemeinstellung.

rlimit_core int

Legt das rlimit für die maximale Core-Größe der Kindprozesse in diesem Pool fest. Mögliche Werte: 'unlimited' oder ein Integer größer oder gleich 0. Standardwert: Systemeinstellung.

chroot string

Wechselt beim Start in das angegebene Verzeichnis als Wurzelverzeichnis. Der Wert muss eine absolute Pfadangabe sein. Wenn dieser Wert nicht gesetzt ist, wird chroot nicht verwendet.

chdir string

Wechselt beim Start in das angegebene Verzeichnis. Der Wert muss eine absolute Pfadangabe sein. Standardwert: aktuelles Verzeichnis oder / bei Verwendung von chroot.

catch_workers_output bool

Leitet stdout (Standardausgabe) und stderr (Standard-Fehlerausgabe) in das Haupt-Fehlerprotokoll um. Wenn nicht gesetzt, werden stdout und stderr entsprechend der FastCGI-Spezifikation nach /dev/null umgeleitet. Standardwert: no.

decorate_workers_output bool

Aktiviert die Ausgabedekoration für die Ausgabe von Workern, wenn catch_workers_output aktiviert ist. Standardwert: yes. Verfügbar von PHP 7.3.0 an.

clear_env bool

Löscht die Umgebung in FPM-Worker-Prozessen. Verhindert, dass beliebige Umgebungsvariablen FPM-Worker-Prozesse erreichen, indem die Umgebung in den Worker-Prozessen gelöscht wird, bevor die Umgebungsvariablen, die in dieser Pool-Konfiguration angegeben sind, hinzugefügt werden. Standardwert: Yes.

security.limit_extensions string

Grenzt die Datei-Erweiterungen des Hauptskripts ein, die FPM parsen darf. Dies kann Konfigurationsfehler seitens des Webservers verhindern. Sie sollten FPM nur auf .php-Erweiterungen beschränken, um zu verhindern, dass bösartige Nutzer andere Erweiterungen verwenden, um PHP-Code auszuführen. Standardwert: .php .phar

apparmor_hat string

Wenn AppArmor aktiviert ist, kann die Kopfzeile geändert werden. Standardwert: nicht festgelegt

access.log string

Die Zugriffsprotokolldatei. Standardwert: nicht gesetzt

access.format string

Das Format des Zugriffsprotokolls. Standardwert: "%R - %u %t \"%m %r\" %s":

Valid options
Platzhalter Beschreibung
%C %CPU
%d Dauer µs
%e fastcgi env
%f Skript
%l Inhaltslänge
%m Methode
%M Erinnerung
%n Poolname
%o Header-Ausgabe
%p PID
%q Abfragezeichenfolge
%Q der Kleber zwischen %q und %r
%r Anfrage-URI
%R Remote-IP-Adresse
%s Status
%T Zeit
%t Zeit
%u entfernter (Remote-) Benutzer

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
PHP Einstellungen, die mit php_value oder php_flag übergeben wurden, überschreiben vorherige Werte. Es sei der Hinweis gestattet, dass disable_functions oder disable_classes nicht dazu führt, dass vorher definierte php.ini-Einstellungen überschrieben werden, vielmehr werden die neuen Werte angehängt.

Einstellungen, die mit php_admin_value und php_admin_flag gemacht wurden, können nicht mit ini_set() verändert werden.

PHP-Einstellungen können in der Konfiguration des Webservers 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";
Achtung

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.

Hinweis: Pools sind kein Sicherheitsmechanismus, denn sie bieten keine vollständige Trennung; z. B. würden alle Pools eine einzige OPcache-Instanz verwenden.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Ein data POST via Curl funktioniert nicht.

Anmorg93 Respekt, du bist ja nur um rund 10 Jahre zu spät dran.

Geschrieben von scatello am 21.11.2024 10:57:00
Forum: PHP Developer Forum
Ein data POST via Curl funktioniert nicht.

Hey, hatte auch mal das Problem. Oft liegt’s an fehlenden oder falschen Headern. Probier mal:​ $ch = curl_init(); curl_setopt($ch, CURLOPT_UR ...

Geschrieben von Anmorg93 am 21.11.2024 10:48:17
Forum: PHP Developer Forum
Probleme mit einem Linux-Befehl...

guten Tag liebe Community ;) hallo liebe Freunde auf der php-Ressource, hoffe, das landet im richtigen Unterforum also, womit ich im Moment zu ...

Geschrieben von dhubs am 15.11.2024 16:21:52
Forum: Off-Topic Diskussionen
ein .htaccess-File für eine WordPress-Installation - wie gehe ich hier vor.?

hallo und guten Tag, wie lege ich denn einen .htaccess für eine WordPress-Installation an - wie gehe ich hier vor. Kann man das denn so mache ...

Geschrieben von dhubs am 13.11.2024 15:52:54
Forum: Webmaster