Configuration

FPM utilise la syntaxe php.ini pour son fichier de configuration - php-fpm.conf ainsi que les fichiers de configuration du pool.

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 de journalisation pour les lignes enregistrées qui permet de journaliser des messages de plus de 1024 caractÚres sans découpage. Valeur par défaut : 1024 Disponible à partir de PHP 7.3.0.

log_buffering booléen

Journalisation expérimentale sans tampon supplémentaire. Valeur par défaut : 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. En cas de multiples instances FPM s'exĂ©cutant sur le mĂȘme serveur, il est possible de changer la valeur par dĂ©faut afin qu'elle convienne aux 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 dĂ©terminer 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 accĂ©lĂ©rateur. UnitĂ©s disponibles : s(econdes), m(inutes), h(eures), ou j(ours). 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 j(ours) 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. À utiliser avec attention. Valeur par dĂ©faut : 0.

process.priority entier

Définit 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. Mettre 'no' pour garder FPM au premier plan lors du débogage. Valeur par défaut : yes.

rlimit_files entier

Définit la rlimit pour les descripteurs de fichiers ouverts pour le processus principal. Valeur par défaut : valeur définie par le systÚme.

rlimit_core entier

Définit 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. Les options suivantes sont disponibles: epoll, kqueue (*BSD), port (Solaris), poll, select. Valeur par dĂ©faut : non dĂ©finie (dĂ©tection automatique privilĂ©giant epoll et kqueue).

systemd_interval entier

Quand FPM est construit avec le support de systemd, spécifie l'intervalle en seconde, entre les notifications de rapport de santé envoyées à systemd. Définir à 0 pour désactiver. Valeur par défaut : 10.

Liste des directives de pool

Avec FPM il est possible d'exĂ©cuter 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 le maximum sur les systÚmes BSD. Valeur par défaut : -1 (FreeBSD ou OpenBSD) ou 511 (Linux et autres plateformes).

listen.allowed_clients chaĂźne de caractĂšres

Liste des adresses IPv4 ou IPv6 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 acceptĂ©es depuis toute adresse ip. Valeur par dĂ©faut : non dĂ©finie (toute adresse IP acceptĂ©e).

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

Voir listen.owner.

listen.mode chaĂźne de caractĂšres

Voir listen.owner.

listen.acl_users chaĂźne de caractĂšres

Quand les listes de contrÎle d'accÚs POSIX sont supportées, il est possible de 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.

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.

listen.setfib int

DĂ©finit la table de routage associĂ©e (FIB). FreeBSD uniquement. Valeur par dĂ©faut : -1. À partir de PHP 8.2.0.

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

Choisit 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 les 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 ou ondemand. Option obligatoire.

Cette option affecte la limite du nombre de requĂȘtes simultanĂ©es qui seront servies. Équivalent Ă  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) / 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.max_spawn_rate int

Nombre maximum de taux de génération de processus enfants simultanés. Utilisé seulement si pm est défini à dynamic. Valeur par défaut : 32

pm.process_idle_timeout mixed

Nombre de secondes aprÚs lesquelles un processus inactif sera tué. Utilisé uniquement quand pm est défini à ondemand. Unités disponibles : s (secondes)(par défaut), m (minutes), h (heures), ou d (jours). Valeur par défaut : 10s.

pm.max_requests entier

Nombre de requĂȘtes que chaque processus fils devrait exĂ©cuter avant de renaĂźtre. Ceci peut ĂȘtre utile pour contourner des fuites mĂ©moires dans des bibliothĂšques tierces. Pour un traitement sans fin des requĂȘtes, prĂ©cisez '0'. Équivalent Ă  PHP_FCGI_MAX_REQUESTS. Par dĂ©faut : 0.

pm.status_listen string

L'adresse sur laquelle accepter la demande de statut FastCGI. Cela crĂ©e un nouveau pool invisible qui peut traiter les requĂȘtes indĂ©pendamment. Ceci est utile si le pool principal est occupĂ© par des requĂȘtes de longue durĂ©e car il est toujours possible d'obtenir la page de statut de FPM avant qu'elles ne soient terminĂ©es. La syntaxe est la mĂȘme que pour la directive listen. Valeur par dĂ©faut : none.

pm.status_path chaĂźne de caractĂšres

L'URI vers la page de statut de FPM. Cette valeur doit commencer par une barre oblique (/). Si cette valeur n'est pas définie, aucun URI ne sera reconnu en tant que page de statut. Valeur par défaut : none.

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. Il est Ă  noter 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écifier 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Ă©finit 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. À partir de 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 j(ours). Par dĂ©faut : 0.

request_terminate_timeout_track_finished bool

Le timeout dĂ©fini par request_terminate_timeout n'est pas engagĂ© aprĂšs un fastcgi_finish_request ou lorsque l'application s'est terminĂ©e et que les fonctions internes d'arrĂȘt sont appelĂ©es. Cette directive permet d'appliquer la limite de temps sans condition. Valeur par dĂ©faut : no. À partir de PHP 7.3.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 j(ours). Par dĂ©faut : 0.

request_slowlog_trace_depth int

Le niveau de profondeur de la trace de la pile de log slowlog. Valeur par dĂ©faut : 20. À partir de PHP 7.2.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 spécifications 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’environnement des agents FPM. PrĂ©vient que des variables d’environnement arbitraires puissent atteindre les processus FPM par le nettoyage de l’environnement de ces agents avant que les variables d’environnement spĂ©cifiĂ©es dans la configuration du pool ne soient ajoutĂ©es. Valeur par dĂ©faut : Yes.

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 cĂŽtĂ© serveur. Il est recommandĂ© de limiter FPM aux extensions .php uniquement pour empĂȘcher des utilisateurs malveillants d'utiliser d'autres extensions pour exĂ©cuter du code PHP. Valeur par dĂ©faut : .php .phar

apparmor_hat string

Si AppArmor est activé, permet de changer un hat (chapeau). Valeur par défaut : non défini

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":

Options valides
Placeholder Description
%% Le caractĂšre %
%C %CPU utilisĂ© par la requĂȘte. Les formats suivants sont acceptĂ©s : %{user}C pour la CPU utilisateur uniquement, %{system}C pour la CPU systĂšme uniquement, %{total}C pour la CPU utilisateur + systĂšme (par dĂ©faut)
%d Temps pris pour traiter la requĂȘte. Les formats suivants sont acceptĂ©s pour la prĂ©cision : %{seconds}d (par dĂ©faut), %{milliseconds}d, %{microseconds}d
%{name}e Une variable d'environnement (identique Ă  $_ENV ou $_SERVER). Un nom de variable doit ĂȘtre spĂ©cifiĂ© entre accolades pour indiquer le nom de la variable d'environnement. Par exemple, des informations spĂ©cifiques au serveur comme %{REQUEST_METHOD}e ou %{SERVER_PROTOCOL}e, des en-tĂȘtes HTTP tels que %{HTTP_HOST}e ou %{HTTP_USER_AGENT}e
%f Nom du fichier script
%l Content-Length de la requĂȘte (pour les requĂȘtes HTTP POST uniquement)
%m MĂ©thode HTTP de la requĂȘte
%M Pic de mémoire allouée par PHP. Accepte les formats suivants : %{bytes}M (défaut), %{kilobytes}M %{kilo}M, %{megabytes}M, %{mega}M
%n Nom du pool
%{name}o En-tĂȘte de sortie. Le nom de l'en-tĂȘte doit ĂȘtre spĂ©cifiĂ© entre accolades. Par exemple : %{Content-Type}o, %{X-Powered-By}o, %{Transfer-Encoding}o
%p PID de l'enfant qui a traité la demande
%P PID du parent de l'enfant qui a traité la demande
%q ChaĂźne de requĂȘte
%Q Le caractĂšre '?', ou le lien entre %q et %r, si la chaĂźne de requĂȘte existe
%r URI de la requĂȘte sans la chaĂźne de requĂȘte, voir %q et %Q
%R Adresse IP distante
%s Statut (code de réponse)
%t Heure du serveur Ă  laquelle la requĂȘte a Ă©tĂ© reçue. Elle peut accepter un format strftime(3) : %d/%b/%Y:%H:%M:%S %z (par dĂ©faut). Le format strftime(3) doit ĂȘtre encapsulĂ© dans une balise %{<strftime_format>}t, par exemple, pour une chaĂźne de temps au format ISO8601, utiliser : %{%Y-%m-%dT%H:%M:%S%z}t
%T Heure Ă  laquelle le log a Ă©tĂ© Ă©crit (lorsque la requĂȘte s'est terminĂ©e). Elle peut accepter un format strftime(3) : %d/%b/%Y:%H:%M:%S %z (par dĂ©faut). Le format strftime(3) doit ĂȘtre encapsulĂ© dans une balise %{<strftime_format>}T, par exemple, pour une chaĂźne de temps au format ISO8601, utiliser : %{%Y-%m-%dT%H:%M:%S%z}T
%u Utilisateur d'authentification basique, si spĂ©cifiĂ© dans l'en-tĂȘte Authorization
access.suppress_path array

Une liste de valeurs request_uri qui devraient ĂȘtre filtrĂ©es du journal d'accĂšs. Valeur par dĂ©faut : non dĂ©finie. À partir de PHP 8.2.0.

Il est possible de passer des variables d'environnement additionnelles et mettre Ă  jour les paramĂštres de PHP d'un pool. Pour ce faire, il faut ajouter les options suivantes au fichier de configuration du pool.

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 PHP passés avec php_value ou php_flag écraseront leur valeur précédente. Il est à noter que définir disable_functions n'écrasera pas les valeurs concernées précédemment définies dans php.ini, mais rajouteront les valeurs à la suite des anciennes.

Les paramĂštres dĂ©finis avec php_admin_value et php_admin_flag ne peuvent ĂȘtre surchargĂ©s via ini_set().

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";
Attention

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.

Note: Les pools ne sont pas un mécanisme de sécurité, car ils ne fournissent pas une séparation totale ; par exemple tous les pools utiliseraient une seule instance OPcache.

add a note

User Contributed Notes 9 notes

up
19
ikrabbe ¶
8 years ago
It seems there is no way to get informed about the access log format codes that are used or can be used. All I found is the source code.

It would really help, not to have open questions when deploying php-fpm. I constantly struggle with file paths for example, but that is another topic.

                                case '%': /* '%' */
                                case 'C': /* %CPU */
                                case 'd': /* duration ”s */
                                case 'e': /* fastcgi env  */
                                case 'f': /* script */
                                case 'l': /* content length */
                                case 'm': /* method */
                                case 'M': /* memory */
                                case 'n': /* pool name */
                                case 'o': /* header output  */
                                case 'p': /* PID */
                                case 'P': /* PID */
                                case 'q': /* query_string */
                                case 'Q': /* '?' */
                                case 'r': /* request URI */
                                case 'R': /* remote IP address */
                                case 's': /* status */
                                case 'T':
                                case 't': /* time */
                                case 'u': /* remote user */
up
13
rob at librobert dot net ¶
5 years ago
The 'include' directive that is used in php-fpm.conf is not documented here. However, this directive can also be used in the pool configurations. In the included file, the $pool variable is substituted correctly.

This means that, if you have multiple pools with similar configurations, you can create a file 'default-values.inc' like so:

-----
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = X
pm.min_spare_servers = X
pm.max_spare_servers = X

access.log = /var/log/php-fpm/$pool.access
access.format = "%R %u [%t] \"%m %r\" %s %d %l"
slowlog = /var/log/php-fpm/$pool.slow

php_flag[short_open_tag] = off
-----

And then include that file in each pool configuration like so:

-----
[vhost1.example.com]
user = www-vhost1
group = www-vhost1

listen = 127.0.0.1:9001

include = /usr/local/etc/php-fpm.d/default-values.inc
-----

This makes things a bit more transparent, and it could potentially save some time if you decide to change settings.

Make sure the name of the included file does not end in '.conf', because all files with that extension are loaded from php-fpm.conf.
up
16
gadnet at aqueos dot com ¶
12 years ago
the doc is lacking a lot of things it seems.

  The php fpm exemple config file indicate different thing, more option etc... I wonder why the main documentation is less verbose that the configuration file that user can have .. or not have ?
up
7
jon dot phpnetdonotspam at langevin dot me ¶
3 years ago
PHP-FPM configuration page apparently doesn't see the need to specify what options are available with each version of PHP.

It claims that pm.status_listen is a valid directive, but that directive only exists as of php 8.0.0, which is a bummer for those of us still using PHP 7.4.

Noting this for anyone else fighting with this.
up
6
antonfedonyuk at gmail dot com ¶
4 years ago
; The access log format.
; The following syntax is allowed
;  %%: the '%' character
;  %C: %CPU used by the request
;      it can accept the following format:
;      - %{user}C for user CPU only
;      - %{system}C for system CPU only
;      - %{total}C  for user + system CPU (default)
;  %d: time taken to serve the request
;      it can accept the following format:
;      - %{seconds}d (default)
;      - %{milliseconds}d
;      - %{milli}d
;      - %{microseconds}d
;      - %{micro}d
;  %e: an environment variable (same as $_ENV or $_SERVER)
;      it must be associated with embraces to specify the name of the env
;      variable. Some examples:
;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
;  %f: script filename
;  %l: content-length of the request (for POST request only)
;  %m: request method
;  %M: peak of memory allocated by PHP
;      it can accept the following format:
;      - %{bytes}M (default)
;      - %{kilobytes}M
;      - %{kilo}M
;      - %{megabytes}M
;      - %{mega}M
;  %n: pool name
;  %o: output header
;      it must be associated with embraces to specify the name of the header:
;      - %{Content-Type}o
;      - %{X-Powered-By}o
;      - %{Transfert-Encoding}o
;      - ....
;  %p: PID of the child that serviced the request
;  %P: PID of the parent of the child that serviced the request
;  %q: the query string
;  %Q: the '?' character if query string exists
;  %r: the request URI (without the query string, see %q and %Q)
;  %R: remote IP address
;  %s: status (response code)
;  %t: server time the request was received
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;      The strftime(3) format must be encapsulated in a %{<strftime_format>}t tag
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
;  %T: time the log has been written (the request has finished)
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;      The strftime(3) format must be encapsulated in a %{<strftime_format>}t tag
;      e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
;  %u: remote user
;
; Default: "%R - %u %t \"%m %r\" %s"
access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"

https://github.com/php/php-src/blob/master/sapi/fpm/www.conf.in#L257-L318
up
9
Frank DENIS ¶
15 years ago
The default value for listen.backlog isn't exactly "unlimited".

It's 128 on some operating systems, and -1 (which doesn't mean "unlimited" as well, but is an alias to a hard limit) on other systems.

Check for a sysctl value like kern.somaxconn (OpenBSD) or net.core.somaxconn (Linux).

Crank it up if you need more PHP workers than the default value. Then adjust listen.backlog in your php-fpm configuration file to the same value.

-Frank.
up
7
frederic at juliana-multimedia dot com ¶
7 years ago
With Apache, mod_proxy_fcgi and php-fpm, if you want to have a generic pool and several vhost with different php configuration, you can use the ProxyFCGISetEnvIf directive and the PHP_ADMIN_VALUE environment variable. It does not work with PHP_ADMIN_FLAG even for boolean directives.

PHP directives must be separated by spaces and a \n.

ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/var/www/toto/:/tmp/ \n session.save_path=/var/www/toto/session \n display_errors=On \n error_reporting=-1"
up
2
antonfedonyuk at gmail dot com ¶
4 years ago
NOTE: "access.format" containing "%o" generate error in PHP 7.4 (don't tested in other versions)
up
2
david dot cancalon at proxeem dot fr ¶
5 years ago
Be very carrefull when using ProxyFCGISetEnvIf within a Apache virtual host configuration using a shared PHP-FPM pool. Values defined like this are shared across all the Apache virtual hosts within a pool worker, may resulting in strange behaviours depending on the requests chronology.

See full explanation here:
https://serverfault.com/questions/817020/stop-reusing-php-value-for-different-sites-with-php-fpm/817905#817905