Настройка

FPM использует синтаксис php.ini для своего файла конфигурации php-fpm.conf и файлов конфигурации пулов.

Список глобальных директив php-fpm.conf

pidstring

Путь к PID-файлу. По умолчанию: none.

error_logstring

Путь к файлу журнала ошибок. По умолчанию: #INSTALL_PREFIX#/log/php-fpm.log. Если задано как "syslog", логирование будет производиться в syslogd, а не в локальный файл.

log_levelstring

Уровень журналирования ошибок. Возможные значения: alert, error, warning, notice, debug. По умолчанию: notice.

log_limitint

Ограничить журналирование для журналируемых линиях, что позволяет записывать сообщения длиной более 1024 символов без упаковки (wrapping). Значение по умолчанию: 1024. Доступно с PHP 7.3.0.

log_bufferingbool

Экспериментальное журналирование без дополнительной буферизации. Значение по умолчанию: yes. Доступно с PHP 7.3.0.

syslog.facilitystring

Используется для указания, какой тип программ будет логировать сообщения. По умолчанию: daemon.

syslog.identstring

Предшествует любому сообщению. Если у вас запущено несколько экземпляры FPM, вы можете изменить значение по умолчанию на то, которое вам необходимо. По умолчанию: php-fpm.

emergency_restart_thresholdint

При данном числе рабочих процессов, завершённых с SIGSEGV или SIGBUS за промежуток времени, установленный emergency_restart_interval FPM будет перезагружен. Значение 0 означает 'Off' (отключено). По умолчанию: 0 (Off).

emergency_restart_intervalmixed

Интервал времени, используемый emergency_restart_interval, чтобы определить, когда FPM будет мягко перезагружен. Это полезно для избежания случайных повреждений общей памяти ускорителя (accelerator). Доступные единицы измерения: s(секунды), m(минуты), h(часы), или d(дни). Единица измерения по умолчанию: секунды. Значение по умолчанию: 0 (Off).

process_control_timeoutmixed

Время, в течение которого дочерние процессы ждут ответа на сигналы мастер-процессу. Доступные единицы измерения: s(секунды), m(минуты), h(часы) или d(дни). Единица измерения по умолчанию: секунды. Значение по умолчанию: 0.

process.maxint

Максимальное количество процессов, которое может породить FPM. Это сделано для того, чтобы контролировать глобальное количество процессов, когда используется большой пул динамического PM. Используйте с осторожностью. По умолчанию: 0.

process.priorityint

Указывает приоритет (Unix nice(2)) мастер-процесса (только если установлено). Принимает значения от -19(максимальный приоритет) до 20(минимальный.) По умолчанию: не установлено.

daemonizebool

Запустить FPM в фоновом режиме. Установите значение 'no', чтобы запустить FPM в диспетчере для отладки. По умолчанию: yes.

rlimit_filesint

Устанавливает rlimit открытых файловых дескрипторов для мастер-процесса. По умолчанию: Значение, определённое системой.

rlimit_coreint

Устанавливает rlimit максимального размера ядра для мастер-процесса. По умолчанию 0.

events.mechanismstring

Указывает, какой событийный механизм будет использован FPM. Возможны такие варианты: select, pool, epoll, kqueue (*BSD), port (Solaris). По умолчанию: не установлено (автоопределение).

systemd_intervalint

Если FPM собран с интеграцией с systemd, указывает интервал, в секундах, между оповещениями systemd о своём состоянии. Для отключения задайте 0. По умолчанию: 10.

Список директив для пулов.

С помощью FPM вы можете запускать несколько пулов процессов с различными настройками. Эти параметры могут быть переданы пулу.

listenstring

Адрес, который будет принимать FastCGI-запросы. Синтаксис: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Эта опция обязательна для каждого пула.

listen.backlogint

Устанавливает listen(2) backlog. Значение -1 означает максимум на системах BSD. Значение по умолчанию: -1 (FreeBSD или OpenBSD) или 511. (Linux и другие платформы).

listen.allowed_clientsstring

Список адресов IPv4 или IPv6 клиентов FastCGI, которым разрешено подключение. Эквивалент переменной окружения FCGI_WEB_SERVER_ADDRS в оригинальном PHP FastCGI (5.2.2+). Имеет смысл только с TCP-сокетом. Каждый адрес должен быть разделён запятой. Если оставить это значение пустым, соединения будут приниматься с любого IP-адреса. Значение по умолчанию: не задано (принимается любой ip-адрес).

listen.ownerstring

Задаёт права для unix-сокета, если они используются. В Linux для разрешения соединений к веб-серверу, должны быть установлены права на чтение/запись. Во многих основанных на BSD-системах возможность соединения не зависит от прав доступа. Значение по умолчанию: используется пользователь и группа, от имени которого запущен сервер, установлен режим 0660.

listen.groupstring

Смотрите listen.owner.

listen.modestring

Смотрите listen.owner.

listen.acl_usersstring

Если поддерживается список управления доступом (ACL) POSIX, вы можете настроить его с помощью этой опции. Если задано, то listen.owner и listen.group будут проигнорированы. Значение задаётся списком имён, разделённых запятой.

listen.acl_groupsstring

Смотрите listen.acl_users. Значение задаётся списком имён групп, разделённых запятой.

userstring

Unix-пользователь FPM-процессов. Этот параметр является обязательным.

groupstring

Unix-группа FPM-процессов. Если не установлен, группа по умолчанию равняется имени пользователя.

pmstring

Выбор того, как менеджер процессов будет контролировать создание дочерних процессов. Возможные значения: static, ondemand, dynamic. Этот параметр является обязательным.

static - фиксированное число дочерних процессов (pm.max_children).

ondemand - число процессов, порождающихся по требованию (когда появляются запросы, в отличие от опции dynamic, когда стартует определённое количество процессов, равное pm.start_servers, вместе с запуском службы.

dynamic - динамически изменяющееся число дочерних процессов, задаётся на основании следующих директив: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.

pm.max_childrenint

Число дочерних процессов, которые будут созданы, когда pm установлен в static, или же максимальное число процессов, которые будут созданы, когда pm установлен в dynamic. Этот параметр является обязательным.

Этот параметр устанавливает ограничение на число одновременных запросов, которые будут обслуживаться. Эквивалент директивы ApacheMaxClients с mpm_prefork и переменной окружения среды PHP_FCGI_CHILDREN в в оригинальном PHP FastCGI.

pm.start_serversint

Число дочерних процессов, создаваемых при запуске. Используется, только когда pm установлен в dynamic. Значение по умолчанию: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.

pm.min_spare_serversint

Желаемое минимальное число неактивных процессов сервера. Используется, только когда pm установлено в dynamic. Кроме того, это обязательный параметр в этом случае.

pm.max_spare_serversint

Желаемое максимальное число неактивных процессов сервера. Используется, только когда pm установлен в dynamic. Кроме того, это обязательный параметр в этом случае.

pm.max_spawn_rateint

Количество одновременных порождений дочерних процессов. Используется только тогда, когда у параметра pm установлено значение dynamic. Значение по умолчанию: 32

pm.process_idle_timeoutmixed

Число секунд, по истечению которых простаивающий процесс будет завершён. Используется только если pm установлено как ondemand. Допустимые единицы: s(econds)(по умолчанию), m(inutes), h(ours) или d(ays). По умолчанию: 10s.

pm.max_requestsint

Число запросов дочернего процесса, после которого процесс будет перезапущен. Это полезно для избежания утечек памяти при использовании сторонних библиотек. Для бесконечной обработки запросов укажите '0'. Эквивалент PHP_FCGI_MAX_REQUESTS. Значение по умолчанию: 0.

pm.status_listenstring

Адрес, по которому будет приниматься запрос состояния FastCGI. Создаёт новый невидимый пул, который может независимо обрабатывать запросы. Полезно, если основной пул занят долго выполняющимися запросами, так как всё ещё можно получить страницу состояния FPM до завершения долго выполняющихся запросов. Синтаксис такой же, как и для директивы listen. Значение по умолчанию: none.

pm.status_pathstring

Ссылка, по которой можно посмотреть страницу состояния FPM. Значение должно начинаться со слеша (/). Если значение не установлено, то страница статуса отображаться не будет. Значение по умолчанию: none.

ping.pathstring

Ссылка на ping-страницу мониторинга FPM. Если значение не установлено, ping-страница отображаться не будет. Может быть использовано для тестирования извне, чтобы убедиться, что FPM жив и отвечает. Обратите внимание, что значение должно начинаться с косой черты (/).

ping.responsestring

Эта директива может быть использована на настройки ответа на ping-запрос. Ответ формируется как text/plain со кодом ответа 200. Значение по умолчанию: pong.

process.priorityint

Задаёт приоритет nice(2) для работающего процесса (только если задан). Значение от -19 (высший приоритет) до 20 (самый низкий). Значение по умолчанию: не задано.

process.dumpablebool

Установить флаг процесса dumpable (PR_SET_DUMPABLE prctl), даже если the пользователь процесса или группа отличается от пользователя мастер-процесса. Это позволяет создавать дамп ядра процесса и выполнить ptrace процесса для пользователя пула. Значение по умолчанию: no. Доступно с PHP 7.0.29, 7.1.17 и 7.2.5.

prefixstring

Задаёт префикс для вычисления пути

request_terminate_timeoutmixed

Время ожидания обслуживания одного запроса, после чего рабочий процесс будет завершён. Этот вариант следует использовать, когда опция 'max_execution_time' в php.ini не останавливает выполнение скрипта по каким-то причинам. Значение '0' означает 'выключено'. Доступные единицы измерения: s(econds), m(inutes), h(ours) или d(ays). Значение по умолчанию: 0.

request_terminate_timeout_track_finishedbool

Время ожидания, установленное с помощью request_terminate_timeout, не включается после fastcgi_finish_request или когда приложение завершено и вызываются внутренние функции завершения работы. Эта директива позволит безоговорочно применять ограничение времени ожидания даже в таких случаях. Значение по умолчанию: нет, начиная с версии PHP 7.3.0.

request_slowlog_timeoutmixed

Время ожидания обслуживания одного запроса, после чего PHP backtrace будет сохранён в файл 'slowlog'. Значение '0' означает 'выключено'. Доступные единицы измерения: s(econds), m(inutes), h(ours) или d(ays). Значение по умолчанию: 0.

request_slowlog_trace_depthint

Глубина трассировки стека журнала slowlog. Значение по умолчанию: 20, начиная с PHP 7.2.0.

slowlogstring

Лог-файл для медленных запросов. Значение по умолчанию: #INSTALL_PREFIX#/log/php-fpm.log.slow.

rlimit_filesint

Устанавливает лимит дескрипторов открытых файлов rlimit для дочерних процессов в этом пуле. Значение по умолчанию: определяется значением системы.

rlimit_coreint

Устанавливает максимальное количество используемых ядер rlimit для дочерних процессов в этом пуле. Возможные значения: 'unlimited' или целое число большее или равное 0. Значение по умолчанию: определяется значением системы.

chrootstring

Директория chroot окружения при старте. Это значение должно быть определено как абсолютный путь. Если значение не установлено, chroot не используется.

chdirstring

Chdir изменяет текущую директорию при старте. Это значение должно быть определено как абсолютный путь. Значение по умолчанию: текущая директория или / при использовании chroot.

catch_workers_outputbool

Перенаправление STDOUT и STDERR рабочего процесса в главный лог ошибок. Если не установлен, STDOUT и STDERR будут перенаправлены в /dev/null в соответствии со спецификацией FastCGI. Значение по умолчанию: no.

decorate_workers_outputbool

Включите оформление выхода (output decoration) для вывода worker-процесса когда опция catch_workers_output включена. Значение по умолчанию: yes. Доступно с PHP 7.3.0.

clear_envbool

Очищает окружение в worker-процессах FPM. Предотвращает попадание произвольных переменных окружения в worker-процессы FPM, очищая окружение у worker-процессах до того, как переменные окружения, указанные в этой конфигурации пула будут добавлены. По умолчанию: Yes.

security.limit_extensionsstring

Ограничивает модули, которые FPM будет анализировать. Это может предотвратить ошибки конфигурации на стороне веб-сервера. Вы должны ограничить FPM только расширениями .php для предотвращения выполнения PHP-кода злоумышленниками другими расширениями. По умолчанию: .php .phar

apparmor_hatstring

Если AppArmor включён, позволяет изменить шапку. Значение по умолчанию: не установлено

access.logstring

Лог-файл доступа. Значение по умолчанию: не установлено

access.formatstring

Формат лог-файла доступа. Значение по умолчанию: "%R - %u %t \"%m %r\" %s":

Допустимые значения
ЗаполнительОписание
%C%CPU
%dдлительность µs
%efastcgi env
%fскрипт
%lдлина содержимого
%mметод
%Mпамять
%nназвание пула
%oвывод заголовка
%pPID
%qстрока запроса
%QGLUE между %q и %r
%rURI запроса
%Rудалённый IP-адрес
%sстатус
%Tвремя
%tвремя
%uудалённый пользователь

Можно передать дополнительные переменные окружения и обновить настройки PHP для определённого пула. Для этого вам необходимо добавить следующие параметры в файл настройки пула.

Пример #1 Передача переменных окружения и настроек PHP пулу

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, переданные через php_value или php_flag перезапишут их предыдущие значения. Пожалуйста, обратите внимание, что определения disable_functions или disable_classes не будут перезаписывать ранее определённые в php.ini значения, а добавят новые значения.

Настройки, определённые через php_admin_value и php_admin_flag, не могут быть перезаписаны через ini_set().

Настройки PHP можно устанавливать через веб-сервер.

Пример #2 Установка настроек PHP в 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";
Предостережение

Так как эти настройки передаются в php-fpm как FastCGI-заголовки, php-fpm не должен быть привязан к общедоступному адресу из мира. В противном случае любой сможет изменить настройки PHP. Смотрите также listen.allowed_clients.

Замечание: Пулы не являются механизмом безопасности, потому что они не обеспечивают полного разделения; например все пулы будут использовать один экземпляр OPcache.

To Top