Налаштування
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_core
int
Встановлює rlimit максимального розміру ядра для майстер-процесу. Типово 0.
events.mechanism
string
Вказує, який механізм дії буде використаний FPM. Можливі такі варіанти: select, pool, epoll, kqueue (*BSD), порт (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
означает максимум на системах BSD. Значение по умолчанию:-1
(FreeBSD або OpenBSD) або 511
. (Linux та інші платформи).
listen.allowed_clients
string
Список адрес IPv4 або IPv6 клієнтів FastCGI, яким дозволено підключення. Еквівалент змінної оточення FCGI_WEB_SERVER_ADDRS в оригінальному PHP FastCGI (5.2.2+). Має сенс лише з TCP-сокетом. Кожна адреса має бути розділена комою. Якщо залишити це значення порожнім, з'єднання прийматимуться з будь-якої IP-адреси. Значення за замовчуванням: не встановлено (приймається будь-яка IP-адреса).
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
будуть проігноровані. Значення задається списком імен, розділених комою.
listen.acl_groups
string
Смотритеlisten.acl_users
. Значення визначається списком імен груп, розділених комою.
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.max_spawn_rate
int
Кількість одночасних породжень дочірніх процесів. Використовується лише тоді, коли параметр pm
установлено значениеdynamic
Значение по умолчанию: 32
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_listen
string
Адреса, за якою прийматиметься запит стану FastCGI. Створює новий невидимий пул, який може самостійно обробляти запити. Корисно, якщо основний пул зайнятий запитами, що довго виконуються, так як все ще можна отримати сторінку стану FPM до завершення тривалих запитів. Синтаксис такий самий, як і для директиви listenЗначение по умолчанию: none.
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), навіть якщо користувач процесу або група відрізняється від користувача майстер-процесу. Це дозволяє створювати дамп ядра процесу та виконати 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_terminate_timeout_track_finished
bool
Время ожидания, установленное с помощью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_depth
int
Глибина трасування стека журналу slowlog. Стандартне значення: 20, починаючи з PHP 7.2.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-процесах до того, як змінні оточення, зазначені в цій конфігурації пула будуть додані. Типово: Yes.
security.limit_extensions
string
Обмежує модулі, які FPM аналізуватиме. Це може запобігти помилкам конфігурації на стороні веб-сервера. Ви повинні обмежити FPM тільки розширеннями .php для запобігання виконання PHP-коду зловмисниками іншими розширеннями. За замовчуванням: .php .phar
apparmor_hat
string
Якщо AppArmor увімкнено, дозволяє змінити шапку. Значення за замовчуванням: не встановлено
access.log
string
Лог файл доступу. Значення за замовчуванням: не встановлено
access.format
string
Формат лог-файла доступа. Значение по умолчанию:"%R - %u %t \"%m %r\" %s"
:
Допустимі значення
Заполнитель | Опис |
---|---|
%C | %CPU |
%d | тривалість µs |
%e | fastcgi env |
%f | скрипт |
%l | довжина вмісту |
%m | метод |
%M | пам'ять |
%n | назва пула |
%o | висновок заголовка |
%p | PID |
%q | рядок запиту |
%Q | GLUE між %q та %r |
%r | URI запиту |
%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.