구성

FPM은 구성 파일(php-fpm.conf 및 풀 구성 파일)에 php.ini 구문을 사용합니다.

전역 php-fpm.conf 지시문 목록

pid string
PID 파일의 경로입니다. 기본값: none.
error_log string
오류 로그 파일의 경로입니다. 기본값: #INSTALL_PREFIX#/log/php-fpm.log. "syslog"로 설정하면 로그가 로컬 파일에 기록되지 않고 syslogd로 전송됩니다.
log_level string
오류 로그 수준. 가능한 값: 경고, 오류, 경고, 알림, 디버그. 기본값: 주의.
log_limit int
줄 바꿈 없이 1024자보다 긴 메시지를 기록할 수 있는 기록된 줄에 대한 로그 제한입니다. 기본값: 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
이 수의 자식 프로세스가 Emergency_restart_interval에 의해 설정된 시간 간격 내에 SIGSEGV 또는 SIGBUS와 함께 종료되면 FPM이 다시 시작됩니다. 값 0은 'Off'를 의미합니다. 기본값: 0(Off).
emergency_restart_interval mixed
정상적인 재시작이 시작될 시기를 결정하기 위해 Emergency_restart_interval에서 사용하는 시간 간격입니다. 이것은 가속기의 공유 메모리에서 우발적인 손상을 해결하는 데 유용할 수 있습니다. 사용 가능한 단위: s(초), m(분), h(ours) 또는 d(ays). 기본 단위: 초. 기본값: 0(off).
process_control_timeout mixed
자식 프로세스가 마스터의 신호에 대한 반응을 기다리는 시간 제한입니다. 사용 가능한 단위: s(초), m(분), h(ours) 또는 d(ays) 기본 단위: seconds. 기본값: 0.
process.max int
FPM이 분기할 최대 프로세스 수입니다. 이것은 많은 풀 내에서 동적 PM을 사용할 때 글로벌 프로세스 수를 제어하도록 설계되었습니다. 주의해서 사용하십시오. 기본값: 0.
process.priority int
마스터 프로세스에 적용할 nice(2) 우선 순위를 지정합니다(설정된 경우에만). 값은 -19(가장 높은 우선 순위)에서 20(낮은 우선 순위)까지 다양합니다. 기본값: not set.
daemonize bool
FPM을 백그라운드로 보냅니다. 디버깅을 위해 FPM을 포그라운드로 유지하려면 'no'로 설정하십시오. 기본값: yes.
rlimit_files int
마스터 프로세스에 대해 열린 파일 설명자 rlimit를 설정합니다. 기본값: system defined value.
rlimit_core int
마스터 프로세스의 최대 코어 크기 rlimit를 설정합니다. 기본값: 0.
events.mechanism string
FPM이 사용할 이벤트 메커니즘을 지정합니다. 선택, 풀, epoll, kqueue(*BSD), 포트(Solaris)를 사용할 수 있습니다. 기본값: not set (auto detection).
systemd_interval int
FPM이 systemd 통합으로 빌드될 때 systemd에 대한 상태 보고서 알림 사이의 간격(초)을 지정합니다. 비활성화하려면 0으로 설정합니다. 기본값: 10.
풀(pool) 지시문 목록

FPM을 사용하면 설정이 다른 여러 프로세스 풀을 실행할 수 있습니다. 풀별로 조정할 수 있는 설정입니다.

listen string
FastCGI 요청을 수락할 주소입니다. 유효한 구문은 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'입니다. 이 옵션은 각 풀에 필수입니다.
listen.backlog int
목록(2) 백로그를 설정합니다. 값 '-1'은 무제한을 의미합니다. 기본값: -1.
listen.allowed_clients string
연결이 허용된 FastCGI 클라이언트의 IPv4 주소 목록입니다. 원래 PHP FastCGI(5.2.2+)의 FCGI_WEB_SERVER_ADDRS 환경 변수와 동일합니다. tcp 수신 소켓에서만 의미가 있습니다. 각 주소는 쉼표로 구분해야 합니다. 이 값을 공백으로 두면 모든 IP 주소에서 연결이 허용됩니다. 기본값: 모두. IPv6 주소가 허용됩니다.
listen.owner string
사용되는 경우 유닉스 소켓에 대한 권한을 설정합니다. Linux에서는 웹 서버에서 연결을 허용하기 위해 읽기/쓰기 권한을 설정해야 합니다. 많은 BSD 파생 시스템은 권한에 관계없이 연결을 허용합니다. 기본값: 사용자 및 그룹은 실행 중인 사용자로 설정되고 모드는 0660으로 설정됩니다.
listen.group string
listen.owner를 참조하십시오.
listen.mode string
listen.owner를 참조하십시오.
listen.acl_users string
POSIX 액세스 제어 목록이 지원되는 경우 이 옵션을 사용하여 설정할 수 있습니다. 설정하면 listen.ownerlisten.group이 무시됩니다. 값은 쉼표로 구분된 사용자 이름 목록입니다.
listen.acl_groups string
listen.acl_users를 참조하십시오. 값은 쉼표로 구분된 그룹 이름 목록입니다.
user string
FPM 프로세스의 Unix 사용자입니다. 이 옵션은 필수입니다.
group string
FPM 프로세스의 Unix 그룹입니다. 설정하지 않으면 기본 사용자 그룹이 사용됩니다.
pm string
프로세스 관리자가 하위 프로세스 수를 제어하는 ​​방법을 선택하십시오. 가능한 값: static, ondemand, dynamic. 이 옵션은 필수입니다.

static - 자식 프로세스의 수가 고정되어 있습니다(pm.max_children).

ondemand - 프로세스는 요청 시 생성됩니다(동적과 반대로 요청 시 서비스가 시작될 때 pm.start_servers가 시작됩니다.

dynamic - 자식 프로세스의 수는 pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers 지시문에 따라 동적으로 설정됩니다.

pm.max_children int
pmstatic일 때 생성될 자식 프로세스의 수와 pmdynamic일 때 생성될 자식 프로세스의 최대 개수. 이 옵션은 필수입니다.

이 옵션은 제공될 동시 요청 수에 대한 제한을 설정합니다. mpm_prefork가 있는 ApacheMaxClients 지시문 및 원래 PHP FastCGI의 PHP_FCGI_CHILDREN 환경 변수와 동일합니다.

pm.start_servers int
시작 시 생성된 자식 프로세스의 수입니다. pmdynamic으로 설정된 경우에만 사용됩니다. 기본값: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.min_spare_servers int
원하는 최소 유휴 서버 프로세스 수입니다. pmdynamic으로 설정된 경우에만 사용됩니다. 이 경우에도 필수입니다.
pm.max_spare_servers int
원하는 최대 유휴 서버 프로세스 수입니다. pm이 dynamic으로 설정된 경우에만 사용됩니다. 이 경우에도 필수입니다.
pm.process_idle_timeout mixed
유휴 프로세스가 종료되는 시간(초)입니다. pmondemand로 설정된 경우에만 사용됩니다. 사용 가능한 단위: s(초)(기본값), m(분), h(ours) 또는 d(ays). 기본값: 10초.
pm.max_requests int
각 자식 프로세스가 다시 생성되기 전에 실행해야 하는 요청 수입니다. 이는 타사 라이브러리의 메모리 누수를 해결하는 데 유용할 수 있습니다. 무한 요청 처리의 경우 '0'을 지정합니다. PHP_FCGI_MAX_REQUESTS와 동일합니다. 기본값: 0.
pm.status_path string
FPM 상태 페이지를 보기 위한 URI입니다. 이 값이 설정되지 않으면 URI가 상태 페이지로 인식되지 않습니다. 기본값: none.
ping.path string
FPM의 모니터링 페이지를 호출하기 위한 ping URI입니다. 이 값이 설정되지 않으면 URI가 핑 페이지로 인식되지 않습니다. 이것은 FPM이 살아 있고 응답하는지 외부에서 테스트하는 데 사용할 수 있습니다. 값은 선행 슬래시(/)로 시작해야 합니다.
ping.response string
이 지시문은 ping 요청에 대한 응답을 사용자 정의하는 데 사용할 수 있습니다. 응답은 200 응답 코드가 있는 텍스트/일반 형식입니다. 기본값: pong.
process.priority int
작업자 프로세스에 적용할 nice(2) 우선 순위를 지정합니다(설정된 경우에만). 값은 -19(가장 높은 우선 순위)에서 20(낮은 우선 순위)까지 다양합니다. 기본값: not set.
process.dumpable bool
프로세스 사용자 또는 그룹이 마스터 프로세스 사용자와 다른 경우에도 프로세스 덤프 가능 플래그(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' ini 옵션이 어떤 이유로 스크립트 실행을 중지하지 않을 때 사용해야 합니다. 값 '0'은 'Off'를 의미합니다. 사용 가능한 단위: s(초)(기본값), m(분), h(ours) 또는 d(ays). 기본값: 0.
request_slowlog_timeout mixed
PHP 역추적이 'slowlog' 파일에 덤프된 후 단일 요청을 제공하기 위한 시간 초과입니다. 값 '0'은 'Off'를 의미합니다. 사용 가능한 단위: s(초)(기본값), m(분), h(ours) 또는 d(ays). 기본값: 0.
slowlog string
느린 요청에 대한 로그 파일입니다. 기본값: #INSTALL_PREFIX#/log/php-fpm.log.slow.
rlimit_files int
이 풀의 자식 프로세스에 대해 열린 파일 설명자 rlimit를 설정합니다. 기본값: system defined value.
rlimit_core int
이 풀의 하위 프로세스에 대한 최대 코어 크기 rlimit를 설정합니다. 가능한 값: '무제한' 또는 0보다 크거나 같은 정수. 기본값: 시스템 정의 값.
chroot string
시작할 때 이 디렉토리로 Chroot하십시오. 이 값은 절대 경로로 정의되어야 합니다. 이 값이 설정되지 않으면 chroot가 사용되지 않습니다.
chdir string
Chdir을 시작 시 이 디렉토리로 이동합니다. 이 값은 절대 경로여야 합니다. 기본값: 현재 디렉토리 또는 /인 경우 chroot.
catch_workers_output bool
작업자 stdout 및 stderr을 기본 오류 로그로 리디렉션합니다. 설정하지 않으면 stdout 및 stderr이 FastCGI 사양에 따라 /dev/null로 리디렉션됩니다. 기본값: no.
decorate_workers_output bool
catch_workers_output이 활성화된 경우 작업자 출력에 대한 출력 장식을 활성화합니다. 기본값: yes. PHP 7.3.0부터 사용 가능합니다.
clear_env bool
FPM 작업자의 깨끗한 환경. 이 풀 구성에 지정된 env 변수가 추가되기 전에 작업자의 환경을 지워 임의의 환경 변수가 FPM 작업자 프로세스에 도달하는 것을 방지합니다. 기본값: yes.
security.limit_extensions string
FPM이 구문 분석할 수 있는 기본 스크립트의 확장을 제한합니다. 이것은 웹 서버 측에서 구성 실수를 방지할 수 있습니다. 악의적인 사용자가 PHP 코드를 실행하기 위해 다른 확장을 사용하는 것을 방지하려면 FPM을 .php 확장으로만 제한해야 합니다. 기본값: .php .phar
access.log string
액세스 로그 파일입니다. 기본값: not set
access.format string
액세스 로그 형식입니다. 기본값: "% R -% u% t \"% m% r \ "% s":

Valid options

Placeholder Description
%C %CPU
%d duration µs
%e fastcgi env
%f script
%l content length
%m method
%M memory
%n pool name
%o header output
%p PID
%q query string
%Q the glue between %q and %r
%r request URI
%R remote IP address
%s status
%T time
%t time
%u remote user

추가 환경 변수를 전달하고 특정 풀의 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로 전달된 PHP 설정은 이전 값을 덮어씁니다. disable_functions 또는 disable_classes를 정의하면 이전에 정의된 php.ini 값을 덮어쓰지 않고 대신 새 값이 추가됩니다.

php_admin_valuephp_admin_flag로 정의된 설정은 ini_set()으로 재정의할 수 없습니다.

PHP 설정은 웹 서버 구성에서 설정할 수 있습니다.

예제 #2 nginx.conf에서 PHP 설정 지정

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";
                

주의 이러한 설정은 fastcgi 헤더로 php-fpm에 전달되기 때문에 php-fpm은 전 세계적으로 액세스 가능한 주소에 바인딩되어서는 안 됩니다. 그렇지 않으면 누구나 PHP 구성 옵션을 변경할 수 있습니다. 또한 listen.allowed_clients를 참조하십시오.