FPM utiliza la sintaxis de php.ini para su archivo de configuración - php-fpm.conf, y archivos de configuración de grupos.
pid
string
Ruta al archivo PID. Valor por defecto: ninguno.
error_log
string
Ruta al archivo de registro de errores. Valor por defecto:
#INSTALL_PREFIX#/log/php-fpm.log.
Si se establece en "syslog", el registro se envía a syslogd en lugar de escribirse en un archivo local.
log_level
string
Nivel de registro de errores. Valores posibles: alert, error, warning, notice, debug. Valor por defecto: notice.
log_limit
int
Límite de registro para las líneas registradas que permite registrar mensajes más largos que 1024 caracteres sin envolver. Valor por defecto: 1024. Disponible a partir de PHP 7.3.0.
log_buffering
bool
Registro experimental sin búfer adicional. Valor por defecto: yes. Disponible a partir de PHP 7.3.0.
syslog.facility
string
usado para especificar qué tipo de programa está registrando el mensaje. Valor por defecto: daemon.
syslog.ident
string
Precede a cada mensaje. Si tiene múltiples instancias de FPM ejecutándose en el mismo servidor, puede cambiar el valor por defecto que debe adaptarse a las necesidades comunes. Valor por defecto: php-fpm.
emergency_restart_threshold
int
Si este número de procesos hijos salen con SIGSEGV o SIGBUS dentro
del intervalo de tiempo establecido por emergency_restart_interval,
entonces FPM se reiniciará. Un valor de 0 significa 'Desactivado'. Valor por defecto: 0 (Desactivado).
emergency_restart_interval
mixed
Intervalo de tiempo utilizado por emergency_restart_interval para determinar cuándo
se iniciará un reinicio sin interrupción. Esto puede ser útil para trabajar alrededor
de corrupciones accidentales en la memoria compartida de un acelerador.
Unidades disponibles: s(econdos), m(inutos), h(oras), o d(ías).
Unidad por defecto: segundos. Valor por defecto: 0 (Desactivado).
process_control_timeout
mixed
Límite de tiempo para que los procesos hijos esperen una reacción a las señales del proceso principal. Unidades disponibles: s(econdos), m(inutos), h(oras), o d(ías) Unidad por defecto: segundos. Valor por defecto: 0.
process.max
int
El número máximo de procesos que FPM generará. Esto ha sido diseñado para controlar el número global de procesos cuando se utiliza PM dinámico dentro de muchos grupos. Úselo con precaución. Valor por defecto: 0.
process.priority
int
Especifica la prioridad nice(2) a aplicar al proceso principal (solo si está establecido). El valor puede variar de -19 (prioridad más alta) a 20 (prioridad más baja). Valor por defecto: no establecido.
daemonize
bool
Enviar FPM al fondo. Establecer en 'no' para mantener FPM en primer plano para depuración. Valor por defecto: yes.
rlimit_files
int
Establecer el límite de descriptores de archivo abiertos para el proceso principal. Valor por defecto: valor definido por el sistema.
rlimit_core
int
Establecer el límite máximo de tamaño de núcleo para el proceso principal. Valor por defecto: 0.
events.mechanism
string
Especifica el mecanismo de eventos que FPM utilizará. Lo siguiente está disponible: epoll, kqueue (*BSD), port (Solaris), poll, select. Valor por defecto: no establecido (detección automática prefiriendo epoll y kqueue).
systemd_interval
int
Cuando FPM se construye con integración de systemd, especificar el intervalo, en segundos, entre las notificaciones de informe de salud a systemd. Establecer en 0 para desactivar. Valor por defecto: 10.
Con FPM puede ejecutar varios grupos de procesos con diferentes configuraciones. Estas son las configuraciones que se pueden ajustar por grupo.
listen
string
La dirección en la que aceptar solicitudes FastCGI. Sintaxis válidas son: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Esta opción es obligatoria para cada grupo.
listen.backlog
int
Establecer listen(2) backlog. Un valor de -1 significa máximo en sistemas BSD.
Valor por defecto: -1 (FreeBSD o OpenBSD) o 511
(Linux y otras plataformas).
listen.allowed_clients
string
Lista de direcciones IPv4 o IPv6 de clientes FastCGI que están autorizados a conectarse. Equivalente a la variable de entorno FCGI_WEB_SERVER_ADDRS en el PHP FastCGI original (5.2.2+). Solo tiene sentido con un socket de escucha tcp. Cada dirección debe estar separada por una coma. Si este valor se deja en blanco, se aceptarán conexiones desde cualquier dirección ip. Valor por defecto: no establecido (se acepta cualquier dirección ip).
listen.owner
string
Establecer permisos para el socket unix, si se utiliza uno. En Linux, los permisos de lectura/escritura deben establecerse para permitir conexiones desde un servidor web. Muchos sistemas derivados de BSD permiten conexiones independientemente de los permisos. Valores por defecto: usuario y grupo se establecen como el usuario en ejecución, modo se establece en 0660.
listen.group
string
Ver listen.owner.
listen.mode
string
Ver listen.owner.
listen.acl_users
string
Cuando se admiten las listas de control de acceso POSIX, puede establecerlas utilizando esta opción.
Cuando se establece, listen.owner y listen.group
se ignoran. El valor es una lista separada por comas de nombres de usuarios.
listen.acl_groups
string
Ver listen.acl_users.
El valor es una lista separada por comas de nombres de grupos.
listen.setfib
int
Establecer la tabla de rutas asociada (FIB). Solo para FreeBSD.
Valor por defecto: -1. Desde PHP 8.2.0.
user
string
Usuario Unix de los procesos FPM. Esta opción es obligatoria.
group
string
Grupo Unix de los procesos FPM. Si no se establece, se utiliza el grupo del usuario por defecto.
pm
string
Elegir cómo el gestor de procesos controlará el número de procesos hijos.
Valores posibles: static, ondemand,
dynamic.
Esta opción es obligatoria.
static - el número de procesos hijos es fijo (pm.max_children).
ondemand - los procesos se generan bajo demanda (cuando se solicita,
a diferencia de dinámico, donde pm.start_servers se inician
cuando se inicia el servicio.
dynamic - el número de procesos hijos se establece dinámicamente en función de las
siguientes directivas: pm.max_children, pm.start_servers,
pm.min_spare_servers, pm.max_spare_servers.
pm.max_children
int
El número de procesos hijos que se crearán cuando pm se establece en
static y el número máximo de procesos hijos que se crearán
cuando pm se establece en dynamic. Esta
opción es obligatoria.
Esta opción establece el límite en el número de solicitudes simultáneas que se atenderán. Equivalente a la directiva ApacheMaxClients con mpm_prefork y a la variable de entorno PHP_FCGI_CHILDREN en el PHP FastCGI original.
pm.start_servers
int
El número de procesos hijos creados al inicio.
Solo se utiliza cuando pm se establece en dynamic.
Valor por defecto: (min_spare_servers + max_spare_servers) / 2.
pm.min_spare_servers
int
El número deseado de procesos de servidor inactivos. Solo se utiliza cuando
pm se establece en dynamic. También
obligatorio en este caso.
pm.max_spare_servers
int
El número deseado de procesos de servidor inactivos. Solo se utiliza cuando
pm se establece en dynamic. También
obligatorio en este caso.
pm.max_spawn_rate
int
El número de tasa para generar procesos hijos a la vez. Solo se utiliza cuando
pm se establece en dynamic.
Valor por defecto: 32
pm.process_idle_timeout
mixed
El número de segundos después de los cuales un proceso inactivo será eliminado.
Solo se utiliza cuando pm se establece en ondemand.
Unidades disponibles: s(econdos)(por defecto), m(inutos), h(oras), o d(ías).
Valor por defecto: 10s.
pm.max_requests
int
El número de solicitudes que cada proceso hijo debe ejecutar antes de regenerarse. Esto puede ser útil para trabajar alrededor de fugas de memoria en bibliotecas de terceros. Para el procesamiento de solicitudes sin fin, especifique '0'. Equivalente a PHP_FCGI_MAX_REQUESTS. Valor por defecto: 0.
pm.status_listen
string
La dirección en la que aceptar solicitudes de estado FastCGI. Esto crea un nuevo grupo invisible que puede manejar solicitudes de forma independiente. Esto es útil si el grupo principal está ocupado con solicitudes de larga duración porque aún es posible obtener la página de estado de FPM antes de finalizar las solicitudes de larga duración. La sintaxis es la misma que para la directiva listen. Valor por defecto: ninguno.
pm.status_path
string
La URI para ver la página de estado de FPM. Este valor debe comenzar con una barra inicial (/). Si este valor no se establece, ninguna URI será reconocida como una página de estado. Valor por defecto: ninguno.
ping.path
string
La URI de ping para llamar a la página de monitoreo de FPM. Si este valor no se establece, ninguna URI será reconocida como una página de ping. Esto podría usarse para probar desde fuera que FPM está vivo y respondiendo. Tenga en cuenta que el valor debe comenzar con una barra inicial (/).
ping.response
string
Esta directiva puede usarse para personalizar la respuesta a una solicitud de ping. La respuesta se formatea como text/plain con un código de respuesta 200. Valor por defecto: pong.
process.priority
int
Especifica la prioridad nice(2) a aplicar al proceso de trabajo (solo si está establecido). El valor puede variar de -19 (prioridad más alta) a 20 (prioridad más baja). Valor por defecto: no establecido.
process.dumpable
bool
Establece la bandera de proceso dumpable (PR_SET_DUMPABLE prctl) incluso si el usuario o grupo del proceso es diferente al usuario del proceso principal. Permite crear un volcado de núcleo de proceso y ptrace el proceso para el usuario del grupo. Valor por defecto: no. Desde PHP 7.0.29, 7.1.17 y 7.2.5.
prefix
string
Especificar prefijo para la evaluación de rutas
request_terminate_timeout
mixed
El tiempo límite para atender una solicitud única después del cual el proceso de trabajo será eliminado. Esta opción debe usarse cuando la opción ini 'max_execution_time' no detiene la ejecución del script por alguna razón. Un valor de '0' significa 'Desactivado'. Unidades disponibles: s(econdos)(por defecto), m(inutos), h(oras), o d(ías). Valor por defecto: 0.
request_terminate_timeout_track_finished
bool
El tiempo límite establecido por request_terminate_timeout no se activa después de un fastcgi_finish_request o cuando la aplicación ha terminado y se están llamando las funciones de cierre internas. Esta directiva habilitará el límite de tiempo para que se aplique incondicionalmente incluso en tales casos. Valor por defecto: no. Desde PHP 7.3.0.
request_slowlog_timeout
mixed
El tiempo límite para atender una solicitud única después del cual se volcará un backtrace de PHP al archivo 'slowlog'. Un valor de '0' significa 'Desactivado'. Unidades disponibles: s(econdos)(por defecto), m(inutos), h(oras), o d(ías). Valor por defecto: 0.
request_slowlog_trace_depth
int
La profundidad del registro de traza de pila de slowlog. Valor por defecto: 20. Desde PHP 7.2.0.
slowlog
string
El archivo de registro para solicitudes lentas. Valor por defecto:
#INSTALL_PREFIX#/log/php-fpm.log.slow.
rlimit_files
int
Establecer el límite de descriptores de archivo abiertos para los procesos hijos en este grupo. Valor por defecto: valor definido por el sistema.
rlimit_core
int
Establecer el límite máximo de tamaño de núcleo para los procesos hijos en este grupo. Valores posibles: 'unlimited' o un entero mayor o igual a 0. Valor por defecto: valor definido por el sistema.
chroot
string
Cambiar al directorio raíz al inicio. Este valor debe definirse como una ruta absoluta. Cuando este valor no está establecido, no se utiliza chroot.
chdir
string
Cambiar al directorio al inicio. Este valor debe ser una ruta absoluta. Valor por defecto: directorio actual o / cuando chroot.
catch_workers_output
bool
Redirigir la salida y error estándar de los trabajadores al registro de errores principal. Si no está establecido, la salida y error estándar se redirigirán a /dev/null según las especificaciones de FastCGI. Valor por defecto: no.
decorate_workers_output
bool
Habilitar la decoración de salida para la salida de los trabajadores cuando catch_workers_output está habilitado. Valor por defecto: yes. Disponible a partir de PHP 7.3.0.
clear_env
bool
Limpiar el entorno en los trabajadores de FPM. Evita que variables de entorno arbitrarias lleguen a los procesos de trabajadores de FPM limpiando el entorno en los trabajadores antes de que se añadan las variables de entorno especificadas en esta configuración de grupo. Valor por defecto: Sí.
security.limit_extensions
string
Limita las extensiones del script principal que FPM permitirá analizar. Esto puede evitar errores de configuración en el lado del servidor web. Solo debe limitar FPM a extensiones .php para evitar que usuarios malintencionados utilicen otras extensiones para ejecutar código php. Valor por defecto: .php .phar
apparmor_hat
string
Si AppArmor está habilitado, permite cambiar de sombrero. Valor por defecto: no establecido
access.log
string
El archivo de registro de acceso. Valor por defecto: no establecido
access.format
string
El formato del registro de acceso.
Valor por defecto: "%R - %u %t \"%m %r\" %s":
| Marcador de posición | Descripción |
|---|---|
%%
|
El carácter % |
%C
|
%CPU utilizado por la solicitud. Puede aceptar el siguiente formato:
%{user}C para solo CPU de usuario,
%{system}C para solo CPU del sistema,
%{total}C para CPU de usuario + sistema (por defecto)
|
%d
|
Tiempo empleado para atender la solicitud.
Puede aceptar los siguientes formatos para precisión:
%{seconds}d (por defecto), %{milliseconds}d,
%{microseconds}d
|
%{name}e
|
Una variable de entorno (igual que $_ENV o $_SERVER).
Un nombre de variable debe especificarse entre llaves para especificar el nombre de la variable de entorno.
Por ejemplo, específicos del servidor como %{REQUEST_METHOD}e o
%{SERVER_PROTOCOL}e, encabezados HTTP como
%{HTTP_HOST}e o %{HTTP_USER_AGENT}e
|
%f
|
Nombre del script |
%l
|
Content-Length de la solicitud (solo para solicitudes HTTP POST)
|
%m
|
Método HTTP de la solicitud |
%M
|
Pico de memoria asignada por PHP.
Puede aceptar el siguiente formato:
%{bytes}M (por defecto), %{kilobytes}M
%{kilo}M, %{megabytes}M,
%{mega}M
|
%n
|
Nombre del grupo |
%{name}o
|
Encabezado de salida. El nombre del encabezado debe especificarse entre llaves.
Por ejemplo: %{Content-Type}o,
%{X-Powered-By}o, %{Transfer-Encoding}o
|
%p
|
PID del hijo que atendió la solicitud |
%P
|
PID del padre del hijo que atendió la solicitud |
%q
|
Cadena de consulta |
%Q
|
El carácter '?', o pegamento entre %q y %r,
si existe la cadena de consulta
|
%r
|
URI de solicitud sin la cadena de consulta,
ver %q y %Q
|
%R
|
Dirección IP remota |
%s
|
Estado (código de respuesta) |
%t
|
Hora del servidor en que se recibió la solicitud. Puede
aceptar un formato strftime(3):
%d/%b/%Y:%H:%M:%S %z (por defecto)
El formato strftime(3) debe encapsularse en
una etiqueta %{<strftime_format>}t, por ejemplo, para una cadena de tiempo en formato ISO8601, use:
%{%Y-%m-%dT%H:%M:%S%z}t
|
%T
|
Hora en que se escribió el registro (cuando la solicitud terminó). Puede aceptar un
formato strftime(3):
%d/%b/%Y:%H:%M:%S %z (por defecto).
El formato strftime(3) debe encapsularse en una
etiqueta %{<strftime_format>}T, por ejemplo, para una cadena de tiempo en formato ISO8601, use:
%{%Y-%m-%dT%H:%M:%S%z}T
|
%u
|
Usuario de autenticación básica, si se especifica en el encabezado Authorization |
access.suppress_path
array
Una lista de valores de request_uri que deben filtrarse del registro de acceso. Valor por defecto: no establecido. Desde PHP 8.2.0.
Es posible pasar variables de entorno adicionales y actualizar la configuración de PHP de un grupo determinado. Para hacer esto, debe agregar las siguientes opciones al archivo de configuración del grupo.
Ejemplo #1 Pasar variables de entorno y configuración de PHP a un grupo
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_value o
php_flag sobrescribirá su valor anterior.
Tenga en cuenta que definir
disable_functions o
disable_classes no
sobrescribirá los valores previamente definidos de php.ini,
sino que añadirá el nuevo valor en su lugar.
Las configuraciones definidas con php_admin_value y php_admin_flag
no pueden ser anuladas con ini_set().
La configuración de PHP puede establecerse en la configuración del servidor web.
Ejemplo #2 Establecer configuración de PHP en 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";
Debido a que estas configuraciones se pasan a php-fpm como encabezados fastcgi, php-fpm no debe estar vinculado a una dirección accesible en todo el mundo. De lo contrario, cualquiera podría alterar las opciones de configuración de PHP. Ver también listen.allowed_clients.
Nota: Los grupos no son un mecanismo de seguridad, porque no proporcionan una separación completa; por ejemplo, todos los grupos utilizarían una sola instancia de OPcache.