Настройка
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_intervalFPM будет перезагружен. Значение 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 для открытого дескриптора файла мастер-процесса(?).
-
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' означает неограниченно. Значение по умолчанию: -1.
-
listen.allowed_clientsstring -
Список IPv4-адресов FastCGI-клиентов, которые имеют право подключения. Эквивалент переменной окружения среды FCGI_WEB_SERVER_ADDRS в оригинальном PHP FastCGI (5.2.2+). Имеет смысл только с TCP-сокетом. Каждый адрес должен быть отделен запятой. Если оставить значение пустым, то соединения будут приниматься с любого IP. По умолчанию: any. Начиная с PHP 5.5.20 и 5.6.4, можно использовать IPv6.
-
listen.ownerstring -
Задает права для unix-сокета, если они используются. В Linux для разрешения соединений к веб-серверу, должны быть установлены права на чтение/запись. Во многих основанных на BSD-системах возможность соединения не зависит от прав доступа. Значение по умолчанию: используется пользователь и группа, от имени которого запущен сервер, установлен режим 0660.
-
listen.groupstring -
См.
listen.owner. -
listen.modestring -
См.
listen.owner. -
listen.acl_usersstring -
Если поддерживается список управления доступом (ACL) POSIX, вы можете настроить его с помощью этой опции. Если задано, то
listen.ownerиlisten.groupбудут проигнорированы. Значение задается списком имен, разделенных запятой. Доступно с PHP 5.6.5. -
listen.acl_groupsstring -
См.
listen.acl_users. Значение задается списком имен групп, разделенных запятой. Доступно с PHP 5.6.5. -
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.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_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_slowlog_timeoutmixed -
Таймаут для обслуживания одного запроса, после чего PHP backtrace будет сохранен в файл 'slowlog'. Значение '0' означает 'выключено'. Доступные единицы измерения: s(econds), m(inutes), h(ours) или d(ays). Значение по умолчанию: 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-процессах до того, как переменные окружения, указанные в этой конфигурации пула будут добавлены. Доступно с PHP 5.4.27, 5.5.11, и 5.6.0. По умолчанию: Yes.
-
security.limit_extensionsstring -
Ограничивает расширения, которые FPM будет анализировать. Это может предотвратить ошибки конфигурации на стороне веб-сервера. Вы должны ограничить FPM только расширениями .php для предотвращения выполнения PHP-кода злоумышленниками другими расширениями. По умолчанию: .php .phar
-
access.logstring -
Лог-файл доступа. Значение по умолчанию: не установлено
-
access.formatstring -
Формал лог-файла доступа. Значение по умолчанию: "%R - %u %t \"%m %r\" %s"
Можно передать дополнительные переменные окружения и обновить настройки 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_value или
php_flag перезапишут их предыдущие значения.
Пожалуйста, обратите внимание, что определения
disable_functions или
disable_classes не
будут будут перезаписывать ранее определенные в php.ini значения,
а добавят новые значения.
Настройки, определенные через php_admin_value и php_admin_flag,
не могут быть перезаписаны через ini_set().
Начиная с версии 5.3.3 настройки 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.