FPM usa a sintaxe do php.ini para arquivos de configuração - php-fpm.conf, e arquivos de configurações de rotinas.
pid
stringCaminho para o arquivo PID. Valor padrão: nenhum.
error_log
string Caminho para o arquivo de log de erro. Valor padrão: #INSTALL_PREFIX#/log/php-fpm.log
. Se configurado com "syslog", o log será enviado para o syslogd ao invés de ser escrito em uma arquivo local.
log_level
stringNível de log de erro. Valores possíveis: alert, error, warning, notice, debug. Valor padrão: notice.
log_limit
intLimite para tamanho das linhas para permitir mensagens de log maiores que 1024 caracteres sem quebras. Valor padrão: 1024. Disponível desde o PHP 7.3.0.
log_buffering
boolLog sem buffering (experimental). Valor padrão: yes. Disponível desde o PHP 7.3.0.
syslog.facility
stringusado para especificar que tipo de programa está logando a mensagem. Valor Padrão: daemon.
syslog.ident
stringNo início de todas as mensagens. Se possuir múltiplas instâncias do FPM rodando no mesmo servidor, pode-se modificar o valor padrão para adaptar-se às necessidades. Valor padrão: php-fpm.
emergency_restart_threshold
int Se esse número de processos filho sair com SIGSEGV ou SIGBUS dentro do intervalo de tempo definido pelo emergency_restart_interval
, o FPM será reiniciado. Um valor 0 significa 'Off'. Valor padrão: 0 (desligado).
emergency_restart_interval
mixed Intervalo de tempo utilizado por emergency_restart_interval
para determinar quando um reinício será feito. Pode ser útil para contornar corrupções acidentais em memória compartilhada de um acelerador. Unidades disponíveis: s(egundos), m(minutos), h(horas), ou d(ias). Unidade Padrão: seconds. Valor padrão: 0 (desligado).
process_control_timeout
mixedPrazo para processos filhos para esperar uma reação em sinais de mestre. Unidades disponíveis: s(egundos), m(minutos), h(horas), ou d(ias) Unidade Padrão: seconds. Valor padrão: 0.
process.max
intO número máximo de processos que o FPM criará. Projeto para controlar o número global de processos ao utilizar PM dinâmico em várias rotinas. Utilize com cautela. Valor padrão: 0.
process.priority
intEspecifica a prioridade nice(2) a ser aplicada ao processo mestre (se estiver configurado). O valor varia de -19 (maior prioridade) até 20 (menor prioridade). Valor padrão: não especificado.
daemonize
boolFaz o FPM ser executado em segundo plano. Defina como 'no' para manter o FPM em primeiro plano, para fins de depuração. Valor padrão: yes.
rlimit_files
intConfigura o descritor rlimit para abertura de arquivos no processo mestre. Valor padrão: valor definido pelo sistema operacional.
rlimit_core
intConfigura o tamanho do núcleo rlimit no processo mestre. Valor padrão: 0.
events.mechanism
stringEspecifica o mecanismo de eventos que o FPM utilizará. Os seguintes estão disponíveis: select, pool, epoll, kqueue (*BSD), port (Solaris). Valor padrão: não especificado (detectado automaticamente).
systemd_interval
intQuando o FPM for compilado com integração ao systemd, especifica o intervalo, em segundos, entre a notificação ao systemd. Defina com 0 para desabilitar. Valor padrão: 10.
Com o FPM você pode executar várias rotinas de processos com configuração diferente. Essas são as configurações que podem ser otimizadas por cada rotina.
listen
stringO endereço que aceita pedidos FastCGI. Sintaxes válidas são: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Esta opção é obrigatória em cada rotina.
listen.backlog
int Define o backlog de listen(2). O valor de -1
significa o máximo em sistemas BSD;. Valor padrão: -1
(FreeBSD ou OpenBSD) ou 511
(Linux e outras plataformas).
listen.allowed_clients
stringLista de endereços IPv4 de clientes FastCGI que estão autorizados a conectar. Equivalente à variável de ambiente FCGI_WEB_SERVER_ADDRS no PHP FastCGI (5.2.2+). Só faz sentido com um soquete de escuta TCP. Cada endereço deve ser separado por uma vírgula. Se este valor for deixado em branco, conexões serão aceitas a partir de qualquer endereço IP. Valor padrão: nenhum (aceita conexões de qualquer IP).
listen.owner
stringDefine permissões para socket unix, se utilizado. No Linux, permissões de leitura/gravação devem ser definidas de forma a permitir conexões a partir de um servidor web. Muitos sistemas derivados do BSD permitir conexões independentemente das permissões. Os valores padrão: usuários e grupos são definidos como o usuário que está executando, de modo está definido para 0660.
listen.group
string Veja listen.owner
.
listen.mode
string Veja listen.owner
.
listen.acl_users
string Quando o suporte ao Access Control Lists POSIX for suportado, pode-se configurá-lo utilizando esta opção. Ao configurá-lo, listen.owner
e listen.group
serão ignorados. Seu valor é uma lista de nomes de usuários, separada por vírgula.
listen.acl_groups
string Veja listen.acl_users
. Seu valor é uma lista de nomes de grupo, separada por vírgula.
user
stringUsuário Unix dos processos FPM. Esta opção é obrigatória.
group
stringGrupo Unix dos processos FPM. Se não for definido, o grupo do usuário padrão será utilizado.
pm
string Escolha como o gerenciador de processos controlará o número de processos filhos. Valores possíveis: static
, ondemand
, dynamic
. Esta opção é obrigatória.
static
- o número de processos filho é fixo (pm.max_children
).
ondemand
- os processos sob demanda (quando solicitado, em oposição a dinâmica, então pm.start_servers
são iniciadas quando o serviço é iniciado.
dynamic
- o número de processos filhos são definidos dinamicamente com base nas seguintes diretrizes: pm.max_children
, pm.start_servers
, pm.min_spare_servers
, pm.max_spare_servers
.
pm.max_children
int O número de processos filhos que podem ser criados quando pm
está configurado como static
e o número máximo de processos filhos podem ser criados quando pm
está configurado como dynamic
. Essa opção é obrigatória.
Esta opção define o limite para o número de solicitações simultâneas que será servida. Equivalente à directiva ApacheMaxClients com mpm_prefork e ao PHP_FCGI_CHILDREN variável de ambiente no originais PHP FastCGI.
pm.start_servers
int O número de processos filhos criados na inicialização. Usado apenas quando pm
é configurado em dynamic
. Valor padrão: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.min_spare_servers
int O número mínimo desejado de processos servidores inativos. Usado apenas quando pm
está configurado como dynamic
. Também obrigatório neste caso.
pm.max_spare_servers
int O número máximo desejado de processos servidores inativos. Usado apenas quando pm
está configurado como dynamic
. Também obrigatório neste caso.
pm.max_spawn_rate
int O número de processos para inicializar de uma vez. Utilizado apenas quando pm
é configurado para dynamic
. Valor padrão: 32
pm.process_idle_timeout
mixed O número de segundos após qual um processo parado será encerrado. Utilizado apenas quando pm
é configurado como ondemand
. Unidades disponíveis: s(segunfos)(default), m(minutos), h(horas), or d(dias). Valor padrão: 10s.
pm.max_requests
intO número de solicitações de cada processo filho deve ser executado antes respawning. Isto pode ser útil para contornar falhas de memória de bibliotecas de terceiro partido. Para o processamento de pedido interminável especificar '0 '. equivalente a PHP_FCGI_MAX_REQUESTS. Valor padrão: 0.
pm.status_listen
stringO endereço no qual o FastCGI acessa requisições de status. Isto cria um novo pool invisível que sustenta essas requisições independentemente. Útil se o pool principal está ocupado com requisições longas dado que é possível obter a página de status FPM enquanto rodando requisições longas. A sintaxe é a mesma da opçãolisten. Valor padrão: vazio.
pm.status_path
stringO URI para visualizar a FPM status page. Este valor precisa começar com uma contra barra (/). Se o valor estiver vazio, nenhuma URI será reconhecida como uma página de status. Valor padrão: vazio.
ping.path
stringO URI ping para chamar a página de FPM de monitoramento. Se este valor não é definido, nenhuma URI será reconhecido como uma página de ping. Isto poderia ser usado para testar de fora que FPM está vivo e responder. Por favor, note que o valor deve começar com uma barra à esquerda (/).
ping.response
stringEsta diretiva pode ser usado para personalizar a resposta a um pedido ping. A resposta é formatada como text/plain com uma resposta de código 200. Valor padrão: pong.
process.priority
intEspecifica a prioridade de nice(2) a ser aplicado ao processo (se informado). Esse valor pode variar de -19 (prioridade máxima) to 20 (priridade mínima). Valor padrão: vazio.
process.dumpable
boolConfigura a flag dumpable (PR_SET_DUMPABLE prctl) mesmo no caso do processo de usuário ou grupo for diferente do processo inicializador. Isto permite criar core dumps de processos e realizar ptrace no user pool. Valor padrão: no. Desde os PHP 7.0.29, 7.1.17 e 7.2.5.
prefix
stringEspecifica um prefix para interpretação de caminhos.
request_terminate_timeout
mixedO tempo limite para servir um único pedido após o qual o processo trabalha serão encerradas. Esta opção deve ser usada quando o 'max_execution_time', opção do arquivo ini não parar a execução do script por algum motivo. Um valor de '0', significa 'Off'. Unidades disponíveis: s(econds) (padrão), m(inuts), h(our), ou d(ays). Valor padrão: 0.
request_terminate_timeout_track_finished
boolO timeout configurado para request_terminate_timeout não é disparado depois de fastcgi_finish_request or quando a aplicação terminou e funções internas de finalização estão rodando. Esta diretiva irá aplicar o timeout mesmo para esses casos. Valor padrão: no. Desde o PHP 7.3.0.
request_slowlog_timeout
mixedO tempo limite para servir um único pedido depois que um rastreamento PHP serão despejados para o arquivo 'slowlog. Um valor de '0 'significa' Off '. Unidades disponíveis: s(egundos)(padrão), m(inutos), h(oras), or d(dias). Valor padrão: 0.
request_slowlog_trace_depth
intA profundidade do stack trace de slowlog. Valor padrão: 20. Desde o PHP 7.2.0.
slowlog
string O arquivo de log de solicitações lentas. Valor padrão: #INSTALL_PREFIX#/log/php-fpm.log.slow
.
rlimit_files
intDefine o descritor de arquivo de abertura rlimit. Valor padrão: valor definido pelo sistema.
rlimit_core
intDefina o tamanho do núcleo máxímo do rlimit. Valores possíveis: 'unlimited' ou um número inteiro maior ou igual a 0. Valor padrão: valor definido pelo sistema.
chroot
stringChroot neste diretório, na inicialização. Este valor deve ser definido como um caminho absoluto. Quando este valor não está definido, chroot não é usado.
chdir
stringChdir neste diretório, na inicialização. Este valor deve ser um caminho absoluto. Valor padrão: diretório atual ou / ao chroot.
catch_workers_output
boolRedirecionar stdout e stderr no log de erro principal. Se não for definido, stdout e stderr serão redirecionadas para /dev/null de acordo com especificações FastCGI. Valor padrão: no.
decorate_workers_output
boolAtiva a decoração do outpur de workers quando catch_workers_output estiver ativo. Valor padrão: yes. Disponível desde o PHP 7.3.0.
clear_env
boolLimpa o ambiente dos workers do FPM. Previne que variáveis de ambiente arbitrárias alcancem os processos dos workers do FPM limpando o ambiente nos workers antes das variáveis de ambientes desta rotina serem adicionadas. Valor padrão: Yes.
security.limit_extensions
stringLimita as extensões que o script principal do FPM possui permissão a analisar. Evita problemas de configurações no servidor de aplicação. Você deve limitar as extensões do FPM a somente o .php para evitar que usuários maliciosos utilizem outras extensões para executar códigos php. Default value: .php .phar
apparmor_hat
stringSe AppArmor estiver ativo, isto permite modificar o hat. Valor padrão: não configurado.
access.log
stringO arquivo de log de acessos. Valor padrão: não configurado.
access.format
string O formato do log de acesso. Valor padrão: "%R - %u %t \"%m %r\" %s"
:
Código | Descrição |
---|---|
%C | %CPU |
%d | duration µs |
%e | fastcgi env |
%f | script |
%l | content length |
%m | method |
%M | memory |
%n | pool name |
%o | header output |
%p | PID |
%q | query string |
%Q | a cola entre %q e %r |
%r | request URI |
%R | IP remoto |
%s | status |
%T | time |
%t | time |
%u | remote user |
É possível passar variáveis de ambiente adicionais e atualizar as configurações do PHP de uma determinada rotina. Para fazer isso, precisa-se adicionar as seguintes opções no arquivo de configuração da rotina.
Exemplo #1 Passando variáveis de ambiente e configurações do PHP para a rotina
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
ou php_flag
irão sobrescrever o valor anterior. Por favor, note que a definição de disable_functions ou disable_classes não irá substituir os valores previamente definidos no php.ini, mas adicionará o novo valor em seu lugar. Configurações definidas com php_admin_value
e php_admin_flag
não podem ser sobrescritas com ini_set().
Configurações do PHP que também podem ser definidas no servidor.
Exemplo #2 definir as configurações de PHP no 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";
Como essas configurações são passadas para php-fpm como cabeçalhos FastCGI, php-fpm não deve ser vinculado a um endereço acessível. Caso contrário, qualquer um poderá alterar as opções de configuração do PHP. veja também listen.allowed_clients.
Nota: Pools não são um mecanismo de segurança, dado que eles não fornecem total separação; por exemplo, todos os pools utiliza uma única instância de OPcache.