FPM utiliza la sintaxis php.ini para su fichero de configuración - php-fpm.conf así como los ficheros de configuración de la cola de espera.
pid
string
Ruta hacia el fichero PID. Por omisión: none.
error_log
string
Ruta hacia el fichero de registro. Por omisión:
#INSTALL_PREFIX#/log/php-fpm.log
.
Si se define como "syslog", el registro se enviará a syslogd en lugar de
ser escrito en un fichero local.
log_level
string
Nivel de registro de errores. Valores posibles: alert, error, warning, notice, debug. Por omisión: notice.
log_limit
int
Límite de historial para las líneas registradas que permite mensajes de eventos más largos que 1024 caracteres sin saturarse. Valor por omisión: 1024 Disponible a partir de PHP 7.3.0.
log_buffering
bool
Historial experimental sin buffer. Valor por omisión: yes. Disponible a partir de PHP 7.3.0.
syslog.facility
string
Utilizado para especificar qué tipo de programa escribe el mensaje. Valor por omisión: daemon.
syslog.ident
string
Se añade al inicio de cada mensaje. Si tiene múltiples instancias FPM ejecutándose en el mismo servidor, puede cambiar el valor por omisión para que se adapte a sus necesidades. Valor por omisión: php-fpm.
emergency_restart_threshold
int
Si este número de procesos hijos terminan con un SIGSEGV o SIGBUS en el intervalo
de tiempo especificado en emergency_restart_interval
, entonces FPM se reiniciará.
Un valor de 0 significa 'Off'. Valor por omisión: 0 (Off).
emergency_restart_interval
mixed
Intervalo de tiempo utilizado por emergency_restart_interval
para determinar cuándo debe lanzarse
un reinicio suave. Esto puede ser útil para evitar corrupciones
accidentales en la memoria compartida de un acelerador. Unidades disponibles:
s(econdes), m(inutes), h(eures), o d(ays).
Unidad por omisión: secondes. Valor por omisión: 0 (Off).
process_control_timeout
mixed
Tiempo límite que esperarán los procesos hijos para reaccionar a las señales del padre. Unidades disponibles: s(econdes), m(inutes), h(eures), o d(ays) Unidad por omisión: secondes. Valor por omisión: 0.
process.max
int
El número máximo de procesos que FPM va a forker. Esto ha sido diseñado para controlar el número global de procesos al utilizar un gestor de procesos dinámico con muchos pools. Usar con precaución. Valor por omisión: 0.
process.priority
int
Define la prioridad nice(2) a aplicar al proceso principal (solo si está definido) El valor puede variar de -19 (prioridad alta) a 20 (prioridad baja). Valor por omisión: no definido.
daemonize
bool
Envía FPM al fondo. Ponga 'no' para mantener FPM en primer plano durante la depuración. Valor por omisión: yes.
rlimit_files
int
Define la rlimit para los descriptores de ficheros abiertos para el proceso principal. Valor por omisión: valor definido por el sistema.
rlimit_core
int
Define la talla máxima de rlimit para el proceso principal. Valor por omisión: 0.
events.mechanism
string
Especifica el gestor de eventos que FPM va a utilizar. Las opciones siguientes están disponibles: epoll, kqueue (*BSD), port (Solaris), poll, select. Valor por omisión: no definido (detección automática privilegiando epoll y kqueue).
systemd_interval
int
Cuando FPM es construido con el soporte de systemd, especifica el intervalo en segundos, entre las notificaciones de informe de salud enviadas a systemd. Definir a 0 para desactivar. Valor por omisión: 10.
Con FPM puede ejecutar múltiples pools de procesos con diferentes parámetros. Aquí están los parámetros que pueden ser ajustados por pool.
listen
string
La dirección para aceptar peticiones FastCGI. Sintaxis válidas: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Esta opción es obligatoria para cada pool.
listen.backlog
int
Afecta listen(2) backlog.
Un valor de -1
significa el máximo en los sistemas BSD.
Valor por omisión: -1
(FreeBSD o OpenBSD)
o 511
(Linux y otras plataformas).
listen.allowed_clients
string
Lista de direcciones IPv4 o IPv6 de los clientes FastCGI autorizados a conectarse. Es equivalente a la variable de entorno FCGI_WEB_SERVER_ADDRS en el sistema FastCGI original de PHP (5.2.2+). No tiene sentido a menos que se utilice un socket tcp en escucha. Cada dirección debe estar separada por una coma. Si este valor no está especificado, las conexiones serán aceptadas desde cualquier dirección ip. Valor por omisión: no definido (toda dirección IP aceptada).
listen.owner
string
Afecta los permisos para el socket Unix si se utiliza. En Linux, los permisos read/write deben ser afectados para autorizar conexiones desde un servidor web. Muchos sistemas derivados de BSD autorizan conexiones cualesquiera sean los permisos. Valores por omisión: user y group son los del usuario actual, el modo es 0660.
listen.group
string
Véase listen.owner
.
listen.mode
string
Véase listen.owner
.
listen.acl_users
string
Cuando las listas de control de acceso POSIX son soportadas, pueden ser definidas usando esta opción.
Cuando se define, listen.owner
y listen.group
son ignorados.
El valor es una lista de nombres de usuarios separados por comas.
listen.acl_groups
string
Véase listen.acl_users
.
El valor es una lista de nombres de grupos separados por comas.
user
string
Usuario Unix de los procesos FPM. Esta opción es obligatoria.
group
string
Grupo Unix de los procesos FPM. Si no se especifica, se utiliza el grupo del usuario.
pm
string
Elige cómo el gestor de procesos va a controlar el número de procesos hijos.
Valores posibles: static
, ondemand
,
dynamic
. Opción obligatoria.
static
- número de procesos hijos fijos (pm.max_children
).
ondemand
- el proceso se reactiva a demanda
(cuando se solicita, es lo opuesto a dinámico donde pm.start_servers
se inician cuando el servicio se inicia).
dynamic
- número de procesos hijos dinámicos basados en las directivas siguientes:
pm.max_children
, pm.start_servers
,
pm.min_spare_servers
, pm.max_spare_servers
.
pm.max_children
int
Número de procesos hijos a crear cuando pm
está ajustado a
static
. Número máximo de procesos hijos a crear cuando
pm
está ajustado a dynamic
. Opción obligatoria.
Esta opción afecta al límite del número de peticiones simultáneas que serán servidas. Equivalente a ApacheMaxClients con mpm_prefork y a PHP_FCGI_CHILDREN en la implementación original de FastCGI de PHP.
pm.start_servers
int
Número de procesos hijos a crear al inicio. Utilizado solo si
pm
está ajustado a dynamic
.
Valor por omisión: (min_spare_servers + max_spare_servers) / 2.
pm.min_spare_servers
int
Número mínimo de procesos en reposo (idle) deseados. Utilizado solo si
pm
está ajustado a dynamic
. Obligatorio en
este caso.
pm.max_spare_servers
int
Número máximo de procesos en reposo (idle) deseados. Utilizado solo si
pm
está ajustado a dynamic
. Obligatorio en
este caso.
pm.max_spawn_rate
int
Número máximo de tasa de generación de procesos hijos simultáneos. Utilizado solo si
pm
está definido a dynamic
.
pm.process_idle_timeout
mixed
Número de segundos después de los cuales un proceso inactivo será eliminado.
Utilizado únicamente cuando pm
está definido a
ondemand
.
Unidades disponibles: s (segundos)(por omisión), m (minutos), h (hora), o d (día).
Valor por omisión: 10s.
pm.max_requests
int
Número de peticiones que cada proceso hijo debería ejecutar antes de renacer. Esto puede ser útil para evitar fugas de memoria en bibliotecas de terceros. Para un tratamiento sin fin de las peticiones, especifique '0'. Equivalente a PHP_FCGI_MAX_REQUESTS. Por omisión: 0.
pm.status_listen
string
La dirección en la que aceptar la petición de estado FastCGI. Esto crea un nuevo pool invisible que puede tratar las peticiones de manera independiente. Esto es útil si el pool principal está ocupado por peticiones de larga duración ya que siempre es posible obtener el estado página de estado de FPM mientras no se hayan terminado. La sintaxis es la misma que para la directiva listen. Valor por omisión: none.
pm.status_path
string
El URI hacia la página de estado de FPM. Este valor debe comenzar con una barra oblicua (/). Si este valor no está definido, ningún URI será reconocido como una página de estado. Valor por omisión: none.
ping.path
string
El URI de ping para llamar a la página de monitoreo de FPM. Si no se especifica ningún valor, ninguna página de ping estará disponible. Esto podría ser utilizado para probar desde el exterior si FPM está aún disponible y listo para responder. Note que el valor debe comenzar con una barra oblicua (/).
ping.response
string
Esta directiva es útil para personalizar la respuesta a una petición de ping. La respuesta está formateada como text/plain con un código de respuesta de 200. Valor por omisión: pong.
process.priority
int
Especifica la prioridad nice(2) a aplicar al proceso de trabajo (solo si está definido). El valor puede variar de -19 (prioridad más alta) a 20 (prioridad más baja). Valor por omisión: no definido.
process.dumpable
bool
Define el indicador de proceso dumpable (PR_SET_DUMPABLE prctl) incluso si el usuario o el grupo de procesos es diferente de el usuario del proceso maestro. Permite crear un core dump del proceso y ptrace el proceso para el usuario del pool. Valor por omisión: no. Desde PHP 7.0.29, 7.1.17 y 7.2.5.
prefix
string
Especifica el prefijo para la evaluación del camino
request_terminate_timeout_track_finished
bool
El timeout definido por request_terminate_timeout no se compromete después de un fastcgi_finish_request o cuando la aplicación ha terminado y las funciones internas de parada son llamadas. Esta directiva permite aplicar el límite de tiempo sin condición. Valor por omisión: no. A partir de PHP 7.3.0.
request_terminate_timeout
mixed
El timeout para servir una petición después del cual el proceso concernido será eliminado. Esta opción debería ser utilizada cuando la opción 'max_execution_time' no detiene la ejecución del script por alguna razón. Un valor de '0' significa 'Off'. Unidades disponibles: s(econdes)(por omisión), m(inutes), h(eures), o d(ays). Por omisión: 0.
request_slowlog_timeout
mixed
El timeout para servir una petición en la cual la backtrace PHP será volcada en el fichero 'slowlog'. Un valor de '0' significa 'Off'. Unidades disponibles: s(econdes)(por omisión), m(inutes), h(eures), o d(ays). Por omisión: 0.
request_slowlog_trace_depth
int
El nivel de profundidad de la traza de la pila de log slowlog. Valor por omisión: 20. A partir de PHP 7.2.0.
slowlog
string
El registro para las peticiones lentas, por omisión:
#INSTALL_PREFIX#/log/php-fpm.log.slow
.
rlimit_files
int
Afecta la rlimit para los descriptores de ficheros abiertos de los procesos hijos de este pool. Valor por omisión: valor del sistema.
rlimit_core
int
Afecta la talla máxima de rlimit de los procesos hijos de este pool. Valores posibles: 'unlimited' o un entero mayor o igual a 0. Valor por omisión: valor definido por el sistema.
chroot
string
Chroot hacia este directorio al inicio. Este valor debe ser una ruta absoluta. Si este valor no está definido, chroot no se utiliza.
chdir
string
Chdir hacia este directorio al inicio. Este valor debe ser una ruta absoluta. Valor por omisión: directorio actual o / si chroot.
catch_workers_output
bool
Redirige stdout y stderr hacia el registro de errores principal. Si no se especifica, stdout y stderr serán redirigidos hacia /dev/null según las especificaciones FastCGI. Valor por omisión: no.
decorate_workers_output
bool
Activa la decoración de salida para los trabajadores de salida cuando catch_workers_output está activado. Valor por omisión: yes. Disponible a partir de PHP 7.3.0.
clear_env
bool
Limpia el entorno de los agentes FPM. Evita que variables de entorno arbitrarias puedan alcanzar los procesos FPM limpiando el entorno de estos agentes antes de que las variables de entorno especificadas en la configuración del pool sean añadidas.
security.limit_extensions
string
Limita las extensiones que el script principal FPM va a ser autorizado a analizar. Esto puede evitar errores de configuración del lado del servidor. Puede limitar FPM a ejecutar solo las extensiones .php para evitar que usuarios maliciosos utilicen otras extensiones para ejecutar código. Valor por omisión: .php .phar
apparmor_hat
string
Si AppArmor está activado, permite cambiar un hat (sombrero). Valor por omisión: no definido
access.log
string
El fichero de registro de acceso. Valor por omisión: no definido
access.format
string
El formato del registro de acceso.
Valor por omisión: "%R - %u %t \"%m %r\" %s"
:
Placeholder | Descripción | |
---|---|---|
%%
|
El carácter % |
|
%C
|
%CPU utilizado por la petición. Los formatos siguientes son aceptados:
%{user}C para la CPU de usuario únicamente,
%{system}C para la CPU de sistema únicamente,
%{total}C para la CPU de usuario + sistema (por omisión)
|
|
%d
|
Tiempo tomado para procesar la petición.
Los formatos siguientes son aceptados para la precisión:
%{seconds}d (por omisión), %{milliseconds}d ,
%{microseconds}d
|
|
%{name}e
|
Una variable de entorno (idéntica a $_ENV o $_SERVER).
Un nombre de variable debe ser especificado entre llaves para indicar el nombre de la variable de entorno.
Por ejemplo, información específica del servidor como %{REQUEST_METHOD}e o
%{SERVER_PROTOCOL}e , encabezados HTTP como
%{HTTP_HOST}e o %{HTTP_USER_AGENT}e
|
fastcgi env |
%f
|
Nombre del fichero script | |
%l
|
Content-Length de la petición (solo para peticiones HTTP POST)
|
|
%m
|
Método HTTP de la petición | |
%M
|
memory | |
%n
|
Nombre del pool | |
%{name}o
|
Encabezado de salida. El nombre del encabezado debe ser especificado entre llaves.
Por ejemplo: %{Content-Type}o ,
%{X-Powered-By}o , %{Transfer-Encoding}o
|
|
%p
|
PID del hijo que procesó la petición | |
%P
|
PID del padre del hijo que procesó la petición | |
%q
|
Cadena de consulta | |
%Q
|
El carácter '?' , o el enlace entre %q y %r ,
si la cadena de consulta existe
|
|
%r
|
URI de la petición sin la cadena de consulta,
ver %q y %Q
|
|
%R
|
Dirección IP remota | |
%s
|
Estado (código de respuesta) | |
%t
|
Hora del servidor a la cual la petición fue recibida. Puede
aceptar un formato strftime(3) :
%d/%b/%Y:%H:%M:%S %z (por omisión).
El formato strftime(3) debe ser encapsulado 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 a la cual el registro fue escrito (cuando la petición terminó). Puede aceptar un
formato strftime(3) :
%d/%b/%Y:%H:%M:%S %z (por omisión).
El formato strftime(3) debe ser encapsulado 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 remoto |
Es posible pasar variables de entorno adicionales y actualizar los parámetros de PHP de un pool. Para ello, debe añadir las opciones siguientes al fichero de configuración de la cola de espera.
Ejemplo #1 Pasar variables de entorno y parámetros PHP a 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
php_value
o
php_flag
sobrescribirán su valor anterior.
Tenga en cuenta que definir
disable_functions o
disable_classes no sobrescribirá
los valores previamente definidos en php.ini,
sino que añadirá los valores a los antiguos.
Los parámetros definidos con php_admin_value
y php_admin_flag
no pueden ser sobrecargados vía ini_set().
Los parámetros de PHP pueden ser definidos en el servidor web.
Ejemplo #2 Definir los parámetros PHP en el fichero 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 son pasadas a php-fpm como encabezados fastcgi, php-fpm no debe estar conectado directamente al web y así ser directamente accesible. De lo contrario, cualquiera podrá alterar las opciones de configuración de PHP. Véase también la opción listen.allowed_clients.
Nota: Los pools no son un mecanismo de seguridad, ya que no proporcionan una separación total; por ejemplo, todos los pools utilizarían una sola instancia OPcache.