Настройка
FPM использует синтаксис php.ini для своего файла конфигурации php-fpm.conf и файлов конфигурации пулов.
Список глобальных директив php-fpm.conf
-
pid
string -
Путь к PID-файлу. По умолчанию: none.
-
error_log
string -
Путь к файлу журнала ошибок. По умолчанию:
#INSTALL_PREFIX#/log/php-fpm.log
. Если задано как "syslog", логирование будет производиться в syslogd, а не в локальный файл. -
log_level
string -
Уровень журналирования ошибок. Возможные значения: alert, error, warning, notice, debug. По умолчанию: notice.
-
log_limit
int -
Ограничить журналирование для журналируемых линиях, что позволяет записывать сообщения длиной более 1024 символов без упаковки (wrapping). Значение по умолчанию: 1024. Доступно с PHP 7.3.0.
-
log_buffering
bool -
Экспериментальное журналирование без дополнительной буферизации. Значение по умолчанию: yes. Доступно с PHP 7.3.0.
-
syslog.facility
string -
Используется для указания, какой тип программ будет логировать сообщения. По умолчанию: daemon.
-
syslog.ident
string -
Предшествует любому сообщению. Если у вас запущено несколько экземпляры FPM, вы можете изменить значение по умолчанию на то, которое вам необходимо. По умолчанию: php-fpm.
-
emergency_restart_threshold
int -
При данном числе рабочих процессов, завершенных с SIGSEGV или SIGBUS за промежуток времени, установленный
emergency_restart_interval
FPM будет перезагружен. Значение 0 означает 'Off' (отключено). По умолчанию: 0 (Off). -
emergency_restart_interval
mixed -
Интервал времени, используемый
emergency_restart_interval
, чтобы определить, когда FPM будет мягко перезагружен. Это полезно для избежания случайных повреждений общей памяти ускорителя (accelerator). Доступные единицы измерения: s(секунды), m(минуты), h(часы), или d(дни). Единица измерения по умолчанию: секунды. Значение по умолчанию: 0 (Off). -
process_control_timeout
mixed -
Время, в течение которого дочерние процессы ждут ответа на сигналы мастер-процессу. Доступные единицы измерения: s(секунды), m(минуты), h(часы) или d(дни). Единица измерения по умолчанию: секунды. Значение по умолчанию: 0.
-
process.max
int -
Максимальное количество процессов, которое может породить FPM. Это сделано для того, чтобы контролировать глобальное количество процессов, когда используется большой пул динамического PM. Используйте с осторожностью. По умолчанию: 0.
-
process.priority
int -
Указывает приоритет (Unix nice(2)) мастер-процесса (только если установлено). Принимает значения от -19(максимальный приоритет) до 20(минимальный.) По умолчанию: не установлено.
-
daemonize
bool -
Запустить FPM в фоновом режиме. Установите значение 'no', чтобы запустить FPM в диспетчере для отладки. По умолчанию: yes.
-
rlimit_files
int -
Устанавливает rlimit открытых файловых дескрипторов для мастер-процесса. По умолчанию: Устанавливает rlimit для открытого дескриптора файла мастер-процесса(?).
-
rlimit_core
int -
Устанавливает rlimit максимального размера ядра для мастер-процесса. По умолчанию 0.
-
events.mechanism
string -
Указывает, какой событийный механизм будет использован FPM. Возможны такие варианты: select, pool, epoll, kqueue (*BSD), port (Solaris). По умолчанию: не установлено (автоопределение).
-
systemd_interval
int -
Если FPM собран с интеграцией с systemd, указывает интервал, в секундах, между оповещениями systemd о своем состоянии. Для отключения задайте 0. По умолчанию: 10.
Список директив для пулов.
С помощью FPM вы можете запускать несколько пулов процессов с различными настройками. Эти параметры могут быть переданы пулу.
-
listen
string -
Адрес, который будет принимать FastCGI-запросы. Синтаксис: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. Эта опция обязательна для каждого пула.
-
listen.backlog
int -
Устанавливает listen(2) backlog. Значение '-1' означает неограниченно. Значение по умолчанию: -1.
-
listen.allowed_clients
string -
Список IPv4-адресов FastCGI-клиентов, которые имеют право подключения. Эквивалент переменной окружения среды FCGI_WEB_SERVER_ADDRS в оригинальном PHP FastCGI (5.2.2+). Имеет смысл только с TCP-сокетом. Каждый адрес должен быть отделен запятой. Если оставить значение пустым, то соединения будут приниматься с любого IP. По умолчанию: any. Начиная с PHP 5.5.20 и 5.6.4, можно использовать IPv6.
-
listen.owner
string -
Задает права для unix-сокета, если они используются. В Linux для разрешения соединений к веб-серверу, должны быть установлены права на чтение/запись. Во многих основанных на BSD-системах возможность соединения не зависит от прав доступа. Значение по умолчанию: используется пользователь и группа, от имени которого запущен сервер, установлен режим 0660.
-
listen.group
string -
См.
listen.owner
. -
listen.mode
string -
См.
listen.owner
. -
listen.acl_users
string -
Если поддерживается список управления доступом (ACL) POSIX, вы можете настроить его с помощью этой опции. Если задано, то
listen.owner
иlisten.group
будут проигнорированы. Значение задается списком имен, разделенных запятой. Доступно с PHP 5.6.5. -
listen.acl_groups
string -
См.
listen.acl_users
. Значение задается списком имен групп, разделенных запятой. Доступно с PHP 5.6.5. -
user
string -
Unix-пользователь FPM-процессов. Этот параметр является обязательным.
-
group
string -
Unix-группа FPM-процессов. Если не установлен, группа по умолчанию равняется имени пользователя.
-
pm
string -
Выбор того, как менеджер процессов будет контролировать создание дочерних процессов. Возможные значения:
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_children
int -
Число дочерних процессов, которые будут созданы, когда
pm
установлен вstatic
, или же максимальное число процессов, которые будут созданы, когдаpm
установлен вdynamic
. Этот параметр является обязательным.Этот параметр устанавливает ограничение на число одновременных запросов, которые будут обслуживаться. Эквивалент директивы ApacheMaxClients с mpm_prefork и переменной окружения среды PHP_FCGI_CHILDREN в в оригинальном PHP FastCGI.
-
pm.start_servers
int -
Число дочерних процессов, создаваемых при запуске. Используется, только когда
pm
установлен вdynamic
. Значение по умолчанию: min_spare_servers + (max_spare_servers - min_spare_servers) / 2. -
pm.min_spare_servers
int -
Желаемое минимальное число неактивных процессов сервера. Используется, только когда
pm
установлено вdynamic
. Кроме того, это обязательный параметр в этом случае. -
pm.max_spare_servers
int -
Желаемое максимальное число неактивных процессов сервера. Используется, только когда
pm
установлен вdynamic
. Кроме того, это обязательный параметр в этом случае. -
pm.process_idle_timeout
mixed -
Число секунд, по истечению которых простаивающий процесс будет завершен. Используется только если
pm
установлено какondemand
. Допустимые единицы: s(econds)(по умолчанию), m(inutes), h(ours) или d(ays). По умолчанию: 10s. -
pm.max_requests
int -
Число запросов дочернего процесса, после которого процесс будет перезапущен. Это полезно для избежания утечек памяти при использовании сторонних библиотек. Для бесконечной обработки запросов укажите '0'. Эквивалент PHP_FCGI_MAX_REQUESTS. Значение по умолчанию: 0.
-
pm.status_path
string -
Ссылка, по которой можно посмотреть страницу состояния FPM. Если значение не установлено, то страница статуса отображаться не будет. Значение по умолчанию: none.
-
ping.path
string -
Ссылка на ping-страницу мониторинга FPM. Если значение не установлено, ping-страница отображаться не будет. Может быть использовано для тестирования извне, чтобы убедиться, что FPM жив и отвечает. Обратите внимание, что значение должно начинаться с косой черты (/).
-
ping.response
string -
Эта директива может быть использована на настройки ответа на ping-запрос. Ответ формируется как text/plain со кодом ответа 200. Значение по умолчанию: pong.
-
process.priority
int -
Задает приоритет nice(2) для работающего процесса (только если задан). Значение от -19 (высший приоритет) до 20 (самый низкий). Значение по умолчанию: не задано.
-
process.dumpable
bool -
Установить флаг процесса dumpable (PR_SET_DUMPABLE prctl), даже если the пользователь процесса или группа отличается от пользователя мастер-процесса. Это позволяет создавать дамп ядра процесса и выполнить ptrace процесса для пользователя пула. Значение по умолчанию: no. Доступно с PHP 7.0.29, 7.1.17 и 7.2.5.
-
prefix
string -
Задает префикс для вычисления пути
-
request_terminate_timeout
mixed -
Таймаут для обслуживания одного запроса, после чего рабочий процесс будет завершен. Этот вариант следует использовать, когда опция 'max_execution_time' в php.ini не останавливает выполнение скрипта по каким-то причинам. Значение '0' означает 'выключено'. Доступные единицы измерения: s(econds), m(inutes), h(ours) или d(ays). Значение по умолчанию: 0.
-
request_slowlog_timeout
mixed -
Таймаут для обслуживания одного запроса, после чего PHP backtrace будет сохранен в файл 'slowlog'. Значение '0' означает 'выключено'. Доступные единицы измерения: s(econds), m(inutes), h(ours) или d(ays). Значение по умолчанию: 0.
-
slowlog
string -
Лог-файл для медленных запросов. Значение по умолчанию:
#INSTALL_PREFIX#/log/php-fpm.log.slow
. -
rlimit_files
int -
Устанавливает лимит дескрипторов открытых файлов rlimit для дочерних процессов в этом пуле. Значение по умолчанию: определяется значением системы.
-
rlimit_core
int -
Устанавливает максимальное количество используемых ядер rlimit для дочерних процессов в этом пуле. Возможные значения: 'unlimited' или целое число большее или равное 0. Значение по умолчанию: определяется значением системы.
-
chroot
string -
Директория chroot окружения при старте. Это значение должно быть определено как абсолютный путь. Если значение не установлено, chroot не используется.
-
chdir
string -
Chdir изменяет текущую директорию при старте. Это значение должно быть определено как абсолютный путь. Значение по умолчанию: текущая директория или / при использовании chroot.
-
catch_workers_output
bool -
Перенаправление STDOUT и STDERR рабочего процесса в главный лог ошибок. Если не установлен, STDOUT и STDERR будут перенаправлены в /dev/null в соответствии со спецификацией FastCGI. Значение по умолчанию: no.
-
decorate_workers_output
bool -
Включите оформление выхода (output decoration) для вывода worker-процесса когда опция catch_workers_output включена. Значение по умолчанию: yes. Доступно с PHP 7.3.0.
-
clear_env
bool -
Очищает окружение в worker-процессах FPM. Предотвращает попадание произвольных переменных окружения в worker-процессы FPM, очищая окружение у worker-процессах до того, как переменные окружения, указанные в этой конфигурации пула будут добавлены. Доступно с PHP 5.4.27, 5.5.11, и 5.6.0. По умолчанию: Yes.
-
security.limit_extensions
string -
Ограничивает расширения, которые FPM будет анализировать. Это может предотвратить ошибки конфигурации на стороне веб-сервера. Вы должны ограничить FPM только расширениями .php для предотвращения выполнения PHP-кода злоумышленниками другими расширениями. По умолчанию: .php .phar
-
access.log
string -
Лог-файл доступа. Значение по умолчанию: не установлено
-
access.format
string -
Формал лог-файла доступа. Значение по умолчанию: "%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.