Налаштування

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_interval mixed

Інтервал часу, що використовується emergency_restart_interval, щоб визначити, коли FPM буде м'яко перезавантажено. Це корисно для запобігання випадковим пошкодженням загальної пам'яті прискорювача (accelerator). Доступні одиниці вимірювання: s(секунди), m(хвилини), h(години), або d(дні). Одиниця виміру за замовчуванням: секунди. Стандартне значення: 0 (Off).

process_control_timeout mixed

Час, протягом якого дочірні процеси чекають на сигнали майстер-процесу. Доступні одиниці вимірювання: 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), порт (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_timeout mixed

Число секунд, по закінченню яких процес, що простоює, буде завершено. Використовується лише якщо 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), навіть якщо користувач процесу або група відрізняється від користувача майстер-процесу. Це дозволяє створювати дамп ядра процесу та виконати ptrace процесу для користувача пула. Значення за промовчанням: no. Доступно з PHP 7.0.29, 7.1.17 та 7.2.5.

prefixstring

Задає префікс для обчислення шляху

request_terminate_timeout mixed

Час очікування на обслуговування одного запиту, після чого робочий процес буде завершено. Цей варіант слід використовувати, коли опція '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_timeout mixed

Час очікування на обслуговування одного запиту, після чого 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 -fwww@my.domain.comphp_flag[display_errors]= off php_admin_value[error_log]= /var/log/fpm-php.www.logphp_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.