Configuration
FPM utilise la syntaxe php.ini pour son fichier de configuration - php-fpm.conf ainsi que les fichiers de configuration de la file d'attente.
Liste des directives globales de php-fpm.conf
-
pid
chaîne de caractères -
Chemin vers le fichier PID. Par défaut: none.
-
error_log
chaîne de caractères -
Chemin vers le fichier de journal. Par défaut: #INSTALL_PREFIX#/log/php-fpm.log. Si défini à "syslog", le journal est envoyé vers syslogd au lieu d'être écrit dans un fichier local.
-
log_level
chaîne de caractères -
Niveau de journalisation d'erreur. Valeurs possibles: alert, error, warning, notice, debug. Par défaut: notice.
-
log_limit
entier -
Limite d'historique pour les lignes enregistrés qui permet des messages d'événements plus long que 1024 charactères sans s'emballer. Valeur par défault : 1024 Disponible à partir de PHP 7.3.0.
-
log_buffering
booléen -
Historique expérimental sans tampon. Valeur par défault : yes. Disponible à partir de PHP 7.3.0.
-
syslog.facility
chaîne de caractères -
Utilisé pour spécifier quel type de programme écrit le message. Valeur par défaut : daemon.
-
syslog.ident
chaîne de caractères -
Ajoute au début de chaque message. Si vous avez de multiples instances FPM s'exécutant sur le même serveur, vous pouvez changer la valeur par défaut afin qu'elle convient à vos besoins. Valeur par défaut: php-fpm.
-
emergency_restart_threshold
entier -
Si ce nombre de processus fils terminent avec un SIGSEGV ou SIGBUS dans l'intervalle de temps précisé dans emergency_restart_interval, alors FPM redémarrera. Une valeur de 0 signifie 'Off'. Valeur par défaut: 0 (Off).
-
emergency_restart_interval
mixed -
Intervalle de temps utilisé par emergency_restart_interval pour determiner lorsqu'un redémarrage doux doit être lancé. Ceci peut être utile pour contourner des corruptions accidentelles dans la mémoire partagée d'un accelérateur. Unités disponibles: s(econdes), m(inutes), h(eures), ou d(ays). Unité par défaut: secondes. Valeur par défaut: 0 (Off).
-
process_control_timeout
mixed -
Temps limite qu'attendront les processus fils pour réagir aux signaux du père. Unités disponibles: s(econdes), m(inutes), h(eures), ou d(ays) Unité par défaut: secondes. Valeur par défaut: 0.
-
process.max
entier -
Le nombre maximum de processus que FPM va forker. Ceci a été conçu pour contrôler le nombre global de processus lors de l'utilisation d'un gestionnaire de processus dynamique avec beaucoup de pools. A utiliser avec attention. Valeur par défaut : 0.
-
process.priority
entier -
Défini la priorité nice(2) à appliquer au processus principal (uniquement si défini) La valeur peut varier de -19 (priorité haute) à 20 (priorité basse). Valeur par défaut : non défini.
-
daemonize
booléen -
Envoie FPM en arrière plan. Mettez 'no' pour garder FPM au premier plan lors du débogage. Valeur par défaut: yes.
-
rlimit_files
entier -
Défini la rlimit pour les descripteurs de fichiers ouverts pour le processus principal. Valeur par défaut: valeur du système.
-
rlimit_core
entier -
Défini la taille maximale de rlimit pour le processus principal. Valeur par défaut : 0.
-
events.mechanism
chaîne de caractères -
Spécifie le gestionnaire d’événement que FPM va utiliser. Sont disponible : select, pool, epoll, kqueue (*BSD), port (Solaris). Valeur par défaut : non défini (détection automatique).
-
systemd_interval
entier -
Quand FPM est construit avec le support de systemd, spécifie l'intervalle en seconde, entre les notification de rapport de santé envoyé à systemd. Définir à 0 pour désactiver. Valeur par défaut : 10.
Liste des directives de pool
Avec FPM vous pouvez executer plusieurs pools de processus avec des paramètres différents. Voici les paramètres qui peuvent être ajustés par pool.
-
listen
chaîne de caractères -
L'adresse pour accepter des requêtes FastCGI. Syntaxes valides : 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Cette option est obligatoire pour chaque pool.
-
listen.backlog
entier -
Affecte listen(2) backlog. Une valeur de '-1' signifie illimité. Valeur par défaut : -1.
-
listen.allowed_clients
chaîne de caractères -
Liste d'adresses IPv4 des clients FastCGI autorisés à se connecter. C'est équivalent à la variable d'environnement FCGI_WEB_SERVER_ADDRS dans le système FastCGI original de PHP (5.2.2+). N'a de sens qu'avec un socket tcp en écoute. Chaque adresse doit être séparée par une virgule. Si cette valeur n'est pas précisée, les connexions seront accceptées depuis toute adresse ip. Valeur par défaut: any. Les adresses IPv6 sont autorisées à partir de PHP 5.5.20 et 5.6.4.
-
listen.owner
chaîne de caractères -
Affecte les permissions pour le socket Unix si utilisé. Sous Linux, les permissions read/write doivent être affectées pour autoriser des connexions depuis un serveur web. Beaucoup de systèmes dérivés BSD autorisent les connexions quelles que soient les permissions. Valeurs par défaut: user et group sont ceux de l'utilisateur courant, le mode est 0660.
-
listen.group
chaîne de caractères -
Voyez listen.owner.
-
listen.mode
chaîne de caractères -
Voyez listen.owner.
-
listen.acl_users
chaîne de caractères -
Quand les listes de contrôle d'accès POSIX sont supportées, vous pouvez les définir en utilisant cette option. Quand défini, listen.owner et listen.group sont ignorés. La valeur est une liste de noms d'utilisateurs séparés par des virgules. Disponible à partir de PHP 5.6.5.
-
listen.acl_groups
chaîne de caractères -
Voir listen.acl_users. La valeur est une liste de noms de groupes séparés par des virgules. Disponible à partir de PHP 5.6.5.
-
user
chaîne de caractères -
Utilisateur Unix des processus FPM. Cette option est obligatoire.
-
group
chaîne de caractères -
Groupe Unix des processus FPM. Si non précisé, le groupe de l'utilisateur est utilisé.
-
pm
chaîne de caractères -
Choisi comment le gestionnaire de processus va contrôler le nombre de processus fils. Valeurs possibles : static, ondemand, dynamic. Option obligatoire.
static - nombre de processus fils fixés (pm.max_children).
ondemand - le processus se réactive à la demande (lorsque demandé, c'est l'opposé de dynamique où pm.start_servers sont démarrés lorsque le service démarre).
dynamic - nombre de processus fils dynamiques basé sur le directives suivantes: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
-
pm.max_children
entier -
Nombre de processus fils à créer lorsque pm est réglé sur static. Nombre maximum de processus fils à créer lorsque pm est réglé sur dynamic. Options obligatoire.
Cette option affecte la limite du nombre de requêtes simultanées qui seront servies. Equivalent à ApacheMaxClients avec mpm_prefork et à PHP_FCGI_CHILDREN dans l'implémentation originale de FastCGI de PHP.
-
pm.start_servers
entier -
Nombre de processus fils à créer au démarrage. Utilisé seulement si pm est réglé sur dynamic. Valeur par défaut: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
-
pm.min_spare_servers
entier -
Nombre minimum de processus au repos (idle) voulus. Utilisé seulement si pm est réglé sur dynamic. Obligatoire dans ce cas.
-
pm.max_spare_servers
entier -
Nombre maximum de processus au repos (idle) voulus. Utilisé seulement si pm est réglé sur dynamic. Obligatoire dans ce cas.
-
pm.process_idle_timeout
mixed -
Nombre de secondes après lesquelles un processus d'inactif sera tué. Utilisé uniquelent quand pm est défini à ondemand. Unité disponible : s (secondes)(par défaut), m (minutes), h (heure), ou d (jourd). Valeur par défaut : 10s.
-
pm.max_requests
entier -
Nombre de requête que chaque processus fils devrait exécuter avant de renaitre. Ceci peut être utile pour contourner des fuites mémoires dans des librairies tierces. Pour un traitement sans fin des requêtes, précisez '0'. Equivalent à PHP_FCGI_MAX_REQUESTS. Par défaut: 0.
-
pm.status_path
chaîne de caractères -
L'URI vers la page de statut de FPM. Si cette valeur n'est pas précisée, aucune page de statut ne sera utilisée, ce qui est le cas par défaut.
-
ping.path
chaîne de caractères -
L'URI de ping pour appeler la page de monitoring de FPM. Si aucune valeur n'est précisée, aucune page de ping ne sera disponible. Ceci pourrait être utilisé pour tester depuis l'extérieur si FPM est toujours disponible et prêt à répondre. Notez que la valeur doit commencer par un slash (/).
-
ping.response
chaîne de caractères -
Cette directive est utile pour personnaliser la réponse à une requête de ping. La réponse est formatée comme text/plain avec un code de réponse de 200. Valeur par défaut: pong.
-
process.priority
entier -
Spécifiez la priorité nice(2) à appliquer au processus de travail (uniquement s'il est défini). La valeur peut varier de -19 (priorité la plus élevée) à 20 (priorité la plus basse). Valeur par défaut: non définie.
-
process.dumpable
booléen -
Défini l'indicateur de processus dumpable (PR_SET_DUMPABLE prctl) même si l'utilisateur ou le groupe de processus est différent de l'utilisateur du processus maître. Il permet de créer un core dump du processus et ptrace le processus pour l'utilisateur de pool. Valeur par défaut: no. Depuis PHP 7.0.29, 7.1.17 et 7.2.5.
-
prefix
chaîne de caractères -
Spécifier le préfixe pour l'évaluation du chemin
-
request_terminate_timeout
mixed -
Le timeout pour servir une requête après lequel le processus concerné sera tué. Cette option devrait être utilisée lorsque l'option 'max_execution_time' n'arrête pas l'exécution du script pour une raison quelconque. Une valeur de '0' signifie 'Off'. Unités disponibles: s(econdes)(défaut), m(inutes), h(eures), ou d(ays). Par défaut: 0.
-
request_slowlog_timeout
mixed -
Le timeout pour servir une requête dans laquelle la backtrace PHP sera vidée dans le fichier 'slowlog'. Une valeur de '0' signifie 'Off'. Unités disponibles: s(econdes)(défaut), m(inutes), h(eures), ou d(ays). Par défaut: 0.
-
slowlog
chaîne de caractères -
Le journal pour les requêtes lentes, par défaut: #INSTALL_PREFIX#/log/php-fpm.log.slow.
-
rlimit_files
entier -
Affecte la rlimit pour les descripteurs de fichiers ouverts des processus enfants de ce pool. Valeur par défaut: valeur du système.
-
rlimit_core
entier -
Affecte la taille maximale de rlimit des processus enfants de ce pool. Valeurs possibles: 'unlimited' ou un entier plus grand ou égal à 0. Valeur par défaut: valeur définie par le système.
-
chroot
chaîne de caractères -
Chroot vers ce dossier au démarrage. Cette valeur doit être un chemin absolu. Si cette valeur n'est pas définie, chroot n'est pas utilisé.
-
chdir
chaîne de caractères -
Chdir vers ce dossier au démarrage. Cette valeur doit être un chemin absolu. Valeur par défaut: dossier courant ou / si chroot.
-
catch_workers_output
booléen -
Redirige stdout et stderr vers le journal d'erreur principal. Si non précisé, stdout et stderr seront redirigés vers /dev/null selon les specifications FastCGI. Valeur par défaut: no.
-
decorate_workers_output
booléen -
Active la décoration de sortie pour les travailleurs de sortie quand catch_workers_output est activé. Valeur par défaut : yes. Disponible à partir de PHP 7.3.0.
-
clear_env
booléen -
Nettoie l’environnent des agents FPM. Prévient que des variables d’environnement arbitraire puissent atteindre les processus FPM par le nettoyage de l'environnement de ces agents avant que les variables d’environnement spécifiée dans la configuration du pool ne soient ajoutées. Disponible depuis PHP 5.4.27, 5.5.11, et 5.6.0.
-
security.limit_extensions
chaîne de caractères -
Limite les extensions que le script principal FPM va être autorisé à analyser. Ceci peut prévenir les erreurs de configuration coté serveur. Vous pouvez limiter FPM à exécuter seulement les extensions .php pour prévenir que des utilisateurs malicieux utilisent d'autres extensions pour exécuter du code. Valeur par défaut : .php .phar
-
access.log
chaîne de caractères -
Le fichier journal d'accès. Valeur par défaut : non définie
-
access.format
chaîne de caractères -
Le format du journal d'accès. Valeur par défaut : "%R - %u %t \"%m %r\" %s"
Il est possible de passer des variables d'environnement additionnelles et mettre à jour les paramètres de PHP d'un pool. Pour ce faire, vous devez ajouter les options suivantes au fichier de configuration de la file d'attente.
Exemple #1 Passer des variables d'environnement et des paramètres PHP à un 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
Les paramètres définis avec php_admin_value et php_admin_flag ne peuvent être surchargés via ini_set().
À partir de 5.3.3, les paramètres de PHP peuvent être définis dans le serveur web.
Exemple #2 Définit les paramètres PHP dans le fichier 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";
En raison du fait que ces configurations sont passées à php-fpm comme en-têtes fastcgi, php-fpm ne doit pas être relié directement au web et ainsi y être directement accessible. Sinon, tout le monde pourra altérer les options de configuration de PHP. Voir aussi l'option listen.allowed_clients.
Version en cache
14/11/2024 14:04:36 Cette version de la page est en cache (à la date du 14/11/2024 14:04:36) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-install.fpm.configuration.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.