<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.fpm.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'en',
  ),
  'this' => 
  array (
    0 => 'install.fpm.configuration.php',
    1 => 'Configuration',
    2 => 'Configuration',
  ),
  'up' => 
  array (
    0 => 'install.fpm.php',
    1 => 'FastCGI Process Manager (FPM)',
  ),
  'prev' => 
  array (
    0 => 'install.fpm.install.php',
    1 => 'Installation',
  ),
  'next' => 
  array (
    0 => 'install.pecl.php',
    1 => 'Installation of PECL extensions',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'install/fpm/configuration.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.fpm.configuration" class="sect1">
   <h2 class="title">Configuration</h2>
   <p class="para">
    FPM uses <var class="filename">php.ini</var> syntax for its configuration file - <var class="filename">php-fpm.conf</var>, and pool configuration files.
   </p>

   <div class="sect2">
    <h3 class="title">List of global <var class="filename">php-fpm.conf</var> directives</h3>
    <dl>
     
      <dt id="pid">
       <code class="parameter">pid</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Path to PID file. Default value: none.
       </p>
      </dd>
     
     
      <dt id="error-log">
       <code class="parameter">error_log</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Path to error log file. Default value:
        <code class="literal">#INSTALL_PREFIX#/log/php-fpm.log</code>.
        If it&#039;s set to &quot;syslog&quot;, log is sent to syslogd instead of being written in a local file.
       </p>
      </dd>
     
     
      <dt id="log-level">
       <code class="parameter">log_level</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Error log level. Possible values: alert, error, warning, notice,
        debug. Default value: notice.
       </p>
      </dd>
     
     
      <dt id="log-limit">
       <code class="parameter">log_limit</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Log limit for the logged lines which allows to log messages longer than
        1024 characters without wrapping.
        Default value: 1024.
        Available as of PHP 7.3.0.
       </p>
      </dd>
     
     
      <dt id="log-buffering">
       <code class="parameter">log_buffering</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        Experimental logging without extra buffering.
        Default value: yes.
        Available as of PHP 7.3.0.
       </p>
      </dd>
     
     
      <dt id="syslog-facility">
       <code class="parameter">syslog.facility</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        used to specify what type of program is logging the message.
        Default value: daemon.
       </p>
      </dd>
     
     
      <dt id="syslog-ident">
       <code class="parameter">syslog.ident</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Prepended to every message.
        If you have multiple FPM instances running on the same server,
        you can change the default value which must suit common needs.
        Default value: php-fpm.
       </p>
      </dd>
     
     
      <dt id="emergency-restart-threshold">
       <code class="parameter">emergency_restart_threshold</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        If this number of child processes exit with SIGSEGV or SIGBUS within
        the time interval set by <code class="literal">emergency_restart_interval</code>,
        then FPM will restart. A value of 0 means &#039;Off&#039;. Default value: 0 (Off).
       </p>
      </dd>
     
     
      <dt id="emergency-restart-interval">
       <code class="parameter">emergency_restart_interval</code>
       <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>
      </dt>
      <dd>
       <p class="para">
        Interval of time used by <code class="literal">emergency_restart_interval</code> to determine when
        a graceful restart will be initiated. This can be useful to work around
        accidental corruptions in an accelerator&#039;s shared memory.
        Available Units: s(econds), m(inutes), h(ours), or d(ays).
        Default Unit: seconds. Default value: 0 (Off).
       </p>
      </dd>
     
     
      <dt id="process-control-timeout">
       <code class="parameter">process_control_timeout</code>
       <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>
      </dt>
      <dd>
       <p class="para">
        Time limit for child processes to wait for a reaction on signals from
        master. Available units: s(econds), m(inutes), h(ours), or d(ays)
        Default Unit: seconds. Default value: 0.
       </p>
      </dd>
     
     
      <dt id="process-max">
       <code class="parameter">process.max</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The maximum number of processes FPM will fork. This has been design
        to control the global number of processes when using dynamic PM
        within a lot of pools. Use it with caution.
        Default value: 0.
       </p>
      </dd>
     
     
      <dt id="process-priority">
       <code class="parameter">process.priority</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Specify the nice(2) priority to apply to the master process (only if set).
        The value can vary from -19 (highest priority) to 20 (lower priority).
        Default value: not set.
       </p>
      </dd>
     
     
      <dt id="daemonize">
       <code class="parameter">daemonize</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        Send FPM to background. Set to &#039;no&#039; to keep FPM in foreground for
        debugging. Default value: yes.
       </p>
      </dd>
     
     
      <dt id="rlimit-files-master">
       <code class="parameter">rlimit_files</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Set open file descriptor rlimit for the master process.
        Default value: system defined value.
       </p>
      </dd>
     
     
      <dt id="rlimit-core-master">
       <code class="parameter">rlimit_core</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Set max core size rlimit for the master process.
        Default value: 0.
       </p>
      </dd>
     
     
      <dt id="events-mechanism">
       <code class="parameter">events.mechanism</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Specify the event mechanism FPM will use.
        The following is available: epoll, kqueue (*BSD), port (Solaris), poll, select.
        Default value: not set (auto detection preferring epoll and kqueue).
       </p>
      </dd>
     
     
      <dt id="systemd-interval">
       <code class="parameter">systemd_interval</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        When FPM is build with systemd integration, specify the interval,
        in second, between health report notification to systemd.
        Set to 0 to disable.
        Default value: 10.
       </p>
      </dd>
     
    </dl>

   </div>

   <div class="sect2">
    <h3 class="title">List of pool directives</h3>
    <p class="para">
     With FPM you can run several pools of processes with different setting.
     These are settings that can be tweaked per pool.
    </p>
    <dl>
     
      <dt id="listen">
       <code class="parameter">listen</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The address on which to accept FastCGI requests. Valid syntaxes are:
        &#039;ip.add.re.ss:port&#039;, &#039;port&#039;, &#039;/path/to/unix/socket&#039;. This option is
        mandatory for each pool.
       </p>
      </dd>
     
     
      <dt id="listen-backlog">
       <code class="parameter">listen.backlog</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Set listen(2) backlog. A value of <code class="literal">-1</code> means maximum on BSD systems.
        Default value: <code class="literal">-1</code> (FreeBSD or OpenBSD) or <code class="literal">511</code>
        (Linux and other platforms).
       </p>
      </dd>
     
     
      <dt id="listen-allowed-clients">
       <code class="parameter">listen.allowed_clients</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        List of IPv4 or IPv6 addresses of FastCGI clients which are allowed to connect. Equivalent
        to the FCGI_WEB_SERVER_ADDRS environment variable in the original PHP FastCGI (5.2.2+).
        Makes sense only with a tcp listening socket. Each address must be separated by a comma.
        If this value is left blank, connections will be accepted from any ip address.
        Default value: not set (any ip address accepted).
       </p>
      </dd>
     
     
      <dt id="listen-owner">
       <code class="parameter">listen.owner</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Set permissions for unix socket, if one is used. In Linux, read/write
        permissions must be set in order to allow connections from a web
        server. Many BSD-derived systems allow connections regardless of permissions.
        Default values: user and group are set as the running user, mode is set to 0660.
       </p>
      </dd>
     
     
      <dt id="listen-group">
       <code class="parameter">listen.group</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        See <code class="literal">listen.owner</code>.
       </p>
      </dd>
     
     
      <dt id="listen-mode">
       <code class="parameter">listen.mode</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        See <code class="literal">listen.owner</code>.
       </p>
      </dd>
     
     
      <dt id="listen-acl-users">
       <code class="parameter">listen.acl_users</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        When POSIX Access Control Lists are supported you can set them using this option.
        When set, <code class="literal">listen.owner</code> and <code class="literal">listen.group</code>
        are ignored. Value is a comma separated list of user names.
       </p>
      </dd>
     
     
      <dt id="listen-acl-groups">
       <code class="parameter">listen.acl_groups</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        See <code class="literal">listen.acl_users</code>.
        Value is a comma separated list of group names.
       </p>
      </dd>
     
     
      <dt id="listen-setfib">
       <code class="parameter">listen.setfib</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Set the associated the route table (FIB). FreeBSD only.
        Default Value: <code class="literal">-1</code>. Since PHP 8.2.0.
       </p>
      </dd>
     
     
      <dt id="user">
       <code class="parameter">user</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Unix user of FPM processes. This option is mandatory.
       </p>
      </dd>
     
     
      <dt id="group">
       <code class="parameter">group</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Unix group of FPM processes. If not set, the default user&#039;s group is
        used.
       </p>
      </dd>
     
     
      <dt id="pm">
       <code class="parameter">pm</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Choose how the process manager will control the number of child
        processes. Possible values: <code class="literal">static</code>, <code class="literal">ondemand</code>,
        <code class="literal">dynamic</code>.
        This option is mandatory.
       </p>
       <p class="para">
        <code class="literal">static</code> - the number of child processes is fixed (<code class="literal">pm.max_children</code>).
       </p>
       <p class="para">
        <code class="literal">ondemand</code> - the processes spawn on demand (when requested,
        as opposed to dynamic, where <code class="literal">pm.start_servers</code> are started
        when the service is started.
       </p>
       <p class="para">
        <code class="literal">dynamic</code> - the number of child processes is set dynamically based on the
        following directives: <code class="literal">pm.max_children</code>, <code class="literal">pm.start_servers</code>,
        <code class="literal">pm.min_spare_servers</code>, <code class="literal">pm.max_spare_servers</code>.
       </p>
      </dd>
     
     
      <dt id="pm.max-children">
       <code class="parameter">pm.max_children</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The number of child processes to be created when <code class="literal">pm</code> is set to
        <code class="literal">static</code> and the maximum number of child processes to be created
        when <code class="literal">pm</code> is set to <code class="literal">dynamic</code>. This
        option is mandatory.
       </p>
       <p class="para">
        This option sets the limit on the number of simultaneous requests that
        will be served. Equivalent to the ApacheMaxClients directive with
        mpm_prefork and to the <var class="varname">PHP_FCGI_CHILDREN</var> environment variable in the
        original PHP FastCGI.
       </p>
      </dd>
     
     
      <dt id="pm.start-servers">
       <code class="parameter">pm.start_servers</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The number of child processes created on startup.
        Used only when <code class="literal">pm</code> is set to <code class="literal">dynamic</code>.
        Default Value: (min_spare_servers + max_spare_servers) / 2.
       </p>
      </dd>
     
     
      <dt id="pm.min-spare-servers">
       <code class="parameter">pm.min_spare_servers</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The desired minimum number of idle server processes. Used only when
        <code class="literal">pm</code> is set to <code class="literal">dynamic</code>. Also
        mandatory in this case.
       </p>
      </dd>
     
     
      <dt id="pm.max-spare-servers">
       <code class="parameter">pm.max_spare_servers</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The desired maximum number of idle server processes. Used only when
        <code class="literal">pm</code> is set to <code class="literal">dynamic</code>. Also
        mandatory in this case.
       </p>
      </dd>
     
     
      <dt id="pm.max-spawn-rate">
       <code class="parameter">pm.max_spawn_rate</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The number of rate to spawn child processes at once. Used only when
        <code class="literal">pm</code> is set to <code class="literal">dynamic</code>.
        Default value: 32
       </p>
      </dd>
     
     
      <dt id="pm.process-idle-timeout">
       <code class="parameter">pm.process_idle_timeout</code>
       <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>
      </dt>
      <dd>
       <p class="para">
        The number of seconds after which an idle process will be killed. 
        Used only when <code class="literal">pm</code> is set to <code class="literal">ondemand</code>.
        Available units: s(econds)(default), m(inutes), h(ours), or d(ays).
        Default value: 10s.
       </p>
      </dd>
     
     
      <dt id="pm.max-requests">
       <code class="parameter">pm.max_requests</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The number of requests each child process should execute before
        respawning. This can be useful to work around memory leaks in 3rd party
        libraries. For endless request processing specify &#039;0&#039;. Equivalent to
        <var class="varname">PHP_FCGI_MAX_REQUESTS</var>. Default value: 0.
       </p>
      </dd>
     
     
      <dt id="pm.status-listen">
       <code class="parameter">pm.status_listen</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The address on which to accept FastCGI status request. This creates a new invisible pool
        that can handle requests independently. This is useful if the main pool is busy with long
        running requests because it is still possible to get the
        <a href="fpm.status.php" class="link">FPM status page</a> before finishing the long running
        requests. The syntax is the same as for <a href="install.fpm.configuration.php#listen" class="link">listen</a> directive.
        Default value: none.
       </p>
      </dd>
     
     
      <dt id="pm.status-path">
       <code class="parameter">pm.status_path</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The URI to view the <a href="fpm.status.php" class="link">FPM status page</a>. This value must
        start with a leading slash (/). If this value is not set, no URI will be recognized as
        a status page. Default value: none.
       </p>
      </dd>
     
     
      <dt id="ping.path">
       <code class="parameter">ping.path</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The ping URI to call the monitoring page of FPM. If this value is not
        set, no URI will be recognized as a ping page. This could be used to test
        from outside that FPM is alive and responding. Please note that the value must
        start with a leading slash (/).
       </p>
      </dd>
     
     
      <dt id="ping.response">
       <code class="parameter">ping.response</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        This directive may be used to customize the response to a ping
        request. The response is formatted as text/plain with a 200 response code.
        Default value: pong.
       </p>
      </dd>
     
     
      <dt id="worker-process-priority">
       <code class="parameter">process.priority</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Specify the nice(2) priority to apply to the worker process (only if set).
        The value can vary from -19 (highest priority) to 20 (lower priority).
        Default value: not set.
       </p>
      </dd>
     
     
      <dt id="process-dumpable">
       <code class="parameter">process.dumpable</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
        or group is different than the master process user. It allows to create process
        core dump and ptrace the process for the pool user.
        Default Value: no. Since PHP 7.0.29, 7.1.17 and 7.2.5.
       </p>
      </dd>
     
     
      <dt id="prefix">
       <code class="parameter">prefix</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Specify prefix for path evaluation
       </p>
      </dd>
     
     
      <dt id="request-terminate-timeout">
       <code class="parameter">request_terminate_timeout</code>
       <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>
      </dt>
      <dd>
       <p class="para">
        The timeout for serving a single request after which the worker
        process will be killed. This option should be used when the &#039;max_execution_time&#039;
        ini option does not stop script execution for some reason. A value of &#039;0&#039; means
        &#039;Off&#039;. Available units: s(econds)(default), m(inutes), h(ours), or d(ays).
        Default value: 0.
       </p>
      </dd>
     
     
      <dt id="request-terminate-timeout-track-finished">
       <code class="parameter">request_terminate_timeout_track_finished</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        The timeout set by
        <a href="install.fpm.configuration.php#request-terminate-timeout" class="link">request_terminate_timeout</a> is not engaged
        after a <a href="function.fastcgi-finish-request.php" class="link">fastcgi_finish_request</a> or
        when application has finished and internal shutdown functions are being called. This
        directive will enable timeout limit to be applied unconditionally even in such cases.
        Default value: no. Since PHP 7.3.0.
       </p>
      </dd>
     
     
      <dt id="request-slowlog-timeout">
       <code class="parameter">request_slowlog_timeout</code>
       <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>
      </dt>
      <dd>
       <p class="para">
        The timeout for serving a single request after which a PHP backtrace
        will be dumped to the &#039;slowlog&#039; file. A value of &#039;0&#039; means &#039;Off&#039;.
        Available units: s(econds)(default), m(inutes), h(ours), or d(ays).
        Default value: 0.
       </p>
      </dd>
     
     
      <dt id="request-slowlog-trace-depth">
       <code class="parameter">request_slowlog_trace_depth</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        The depth of slowlog log stack trace.
        Default value: 20. Since PHP 7.2.0.
       </p>
      </dd>
     
     
      <dt id="slowlog">
       <code class="parameter">slowlog</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The log file for slow requests. Default value:
        <code class="literal">#INSTALL_PREFIX#/log/php-fpm.log.slow</code>.
       </p>
      </dd>
     
     
      <dt id="rlimit-files">
       <code class="parameter">rlimit_files</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Set open file descriptor rlimit for child processes in this pool. Default value: system defined value.
       </p>
      </dd>
     
     
      <dt id="rlimit-core">
       <code class="parameter">rlimit_core</code>
       <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      </dt>
      <dd>
       <p class="para">
        Set max core size rlimit for child processes in this pool. Possible Values: &#039;unlimited&#039; or an integer greater or equal to 0.
        Default value: system defined value.
       </p>
      </dd>
     
     
      <dt id="chroot">
       <code class="parameter">chroot</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Chroot to this directory at the start. This value must be defined as
        an absolute path. When this value is not set, chroot is not used.
       </p>
      </dd>
     
     
      <dt id="chdir">
       <code class="parameter">chdir</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Chdir to this directory at the start. This value must be an absolute
        path. Default value: current directory or / when chroot.
       </p>
      </dd>
     
     
      <dt id="catch-workers-output">
       <code class="parameter">catch_workers_output</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        Redirect worker stdout and stderr into main error log. If not set,
        stdout and stderr will be redirected to /dev/null according to FastCGI specs.
        Default value: no.
       </p>
      </dd>
     
     
      <dt id="decorate-workers-output">
       <code class="parameter">decorate_workers_output</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        Enable the output decoration for workers output when <a href="install.fpm.configuration.php#catch-workers-output" class="link">catch_workers_output</a> is enabled.
        Default value: yes.
        Available as of PHP 7.3.0.
       </p>
      </dd>
     
     
      <dt id="clear-env">
       <code class="parameter">clear_env</code>
       <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
      </dt>
      <dd>
       <p class="para">
        Clear environment in FPM workers.
        Prevents arbitrary environment variables from reaching FPM worker processes
        by clearing the environment in workers before env vars specified in this
        pool configuration are added.
        Default value: Yes.
       </p>
      </dd>
     
     
      <dt id="security-limit-extensions">
       <code class="parameter">security.limit_extensions</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        Limits the extensions of the main script FPM will allow to parse.
        This can prevent configuration mistakes on the web server side.
        You should only limit FPM to .php extensions to prevent malicious
        users to use other extensions to execute php code.
        Default value: .php .phar
       </p>
      </dd>
     
     
      <dt id="apparmor-hat">
       <code class="parameter">apparmor_hat</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        If AppArmor is enabled, it allows to change a hat.
        Default value: not set
       </p>
      </dd>
     
     
      <dt id="access-log">
       <code class="parameter">access.log</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The access log file.
        Default value: not set
       </p>
      </dd>
     
     
      <dt id="access-format">
       <code class="parameter">access.format</code>
       <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
      </dt>
      <dd>
       <p class="para">
        The access log format.
        Default value: <code class="literal">&quot;%R - %u %t \&quot;%m %r\&quot; %s&quot;</code>:
        <table id="fpm.configuration.access.format" class="doctable table">
         <caption><strong>Valid options</strong></caption>
         
          <thead>
           <tr>
            <th>Placeholder</th>
            <th>Description</th>
           </tr>

          </thead>

          <tbody class="tbody">
           <tr>
            <td>
             <code class="literal">%%</code>
            </td>
            <td>The <code class="literal">%</code> character</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%C</code>
            </td>
            <td>
             %CPU used by the request. It can accept the following format:
             <code class="literal">%{user}C</code> for user CPU only,
             <code class="literal">%{system}C</code> for system CPU only,
             <code class="literal">%{total}C</code> for user + system CPU (default)
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%d</code>
            </td>
            <td>
             Time taken to serve the request.
             It can accept the following formats for precision:
             <code class="literal">%{seconds}d</code> (default), <code class="literal">%{milliseconds}d</code>,
             <code class="literal">%{microseconds}d</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%{<span class="replaceable">name</span>}e</code>
            </td>
            <td>
             An environment variable (same as <var class="varname"><a href="reserved.variables.environment.php" class="classname">$_ENV</a></var> or <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var>).
             A variable name must be specified within curly brackets to specify the name of the env variable.
             For example, server specifics like <code class="literal">%{REQUEST_METHOD}e</code> or
             <code class="literal">%{SERVER_PROTOCOL}e</code>, HTTP headers like
             <code class="literal">%{HTTP_HOST}e</code> or <code class="literal">%{HTTP_USER_AGENT}e</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%f</code>
            </td>
            <td>Script filename</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%l</code>
            </td>
            <td>
             <code class="literal">Content-Length</code> of the request (for HTTP POST request only)
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%m</code>
            </td>
            <td>Request HTTP method</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%M</code>
            </td>
            <td>
             Peak of memory allocated by PHP.
             It can accept the following format:
             <code class="literal">%{bytes}M</code> (default), <code class="literal">%{kilobytes}M</code>
             <code class="literal">%{kilo}M</code>, <code class="literal">%{megabytes}M</code>,
             <code class="literal">%{mega}M</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%n</code>
            </td>
            <td>Pool name</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%{<span class="replaceable">name</span>}o</code>
            </td>
            <td>
             Output header. The header name must be specified within curly brackets.
             For example: <code class="literal">%{Content-Type}o</code>,
             <code class="literal">%{X-Powered-By}o</code>, <code class="literal">%{Transfer-Encoding}o</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%p</code>
            </td>
            <td>PID of the child that serviced the request</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%P</code>
            </td>
            <td>PID of the parent of the child that serviced the request</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%q</code>
            </td>
            <td>Query string</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%Q</code>
            </td>
            <td>
             The <code class="literal">&#039;?&#039;</code> character, or glue between <code class="literal">%q</code> and <code class="literal">%r</code>,
             if query string exists
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%r</code>
            </td>
            <td>
             Request URI without the query string,
             see <code class="literal">%q</code> and <code class="literal">%Q</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%R</code>
            </td>
            <td>Remote IP address</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%s</code>
            </td>
            <td>Status (response code)</td>
           </tr>

           <tr>
            <td>
             <code class="literal">%t</code>
            </td>
            <td>
             Server time the request was received. It can
             accept a <code class="literal">strftime(3)</code> format:
             <code class="literal">%d/%b/%Y:%H:%M:%S %z</code> (default)
             The <code class="literal">strftime(3)</code> format must be encapsulated in
             a <code class="literal">%{&lt;strftime_format&gt;}t</code> tag, e.g. for a ISO8601
             formatted timestring, use:
             <code class="literal">%{%Y-%m-%dT%H:%M:%S%z}t</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%T</code>
            </td>
            <td>
             Time the log was written (when the request finished). It can accept a
             <code class="literal">strftime(3)</code> format:
             <code class="literal">%d/%b/%Y:%H:%M:%S %z</code> (default).
             The <code class="literal">strftime(3)</code> format must be encapsulated in a
             <code class="literal">%{&lt;strftime_format&gt;}T</code> tag, e.g. for a ISO8601
             formatted timestring, use:
             <code class="literal">%{%Y-%m-%dT%H:%M:%S%z}T</code>
            </td>
           </tr>

           <tr>
            <td>
             <code class="literal">%u</code>
            </td>
            <td>Basic access authentication user, if specified in <code class="literal">Authorization</code> header</td>
           </tr>

          </tbody>
         
        </table>

       </p>
      </dd>
     
     
      <dt id="access.suppress-path">
       <code class="parameter">access.suppress_path</code>
       <span class="type"><a href="language.types.array.php" class="type array">array</a></span>
      </dt>
      <dd>
       <p class="para">
        A list of request_uri values which should be filtered from the access log.
        Default value: not set. Since PHP 8.2.0.
       </p>
      </dd>
     
    </dl>
    <p class="para">
     It&#039;s possible to pass additional environment variables and update PHP settings of a certain pool.
     To do this, you need to add the following options to the pool configuration file.
     <div class="example" id="example-1">
      <p><strong>Example #1 Passing environment variables and PHP settings to a pool</strong></p>
      <div class="example-contents">
<div class="inicode"><pre class="inicode">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</pre>
</div>
      </div>

     </div>
     PHP settings passed with <code class="literal">php_value</code> or
     <code class="literal">php_flag</code> will overwrite their previous value.
     Please note that defining
     <a href="ini.core.php#ini.disable-functions" class="link">disable_functions</a> or
     <a href="ini.core.php#ini.disable-classes" class="link">disable_classes</a> will
     not overwrite previously defined <var class="filename">php.ini</var> values,
     but will append the new value instead.
    </p>
    <p class="para">
     Settings defined with <code class="literal">php_admin_value</code> and <code class="literal">php_admin_flag</code>
     cannot be overridden with <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span>.
    </p>
    <p class="para">
     PHP settings can be set in the webserver configuration.
     <div class="example" id="example-2">
      <p><strong>Example #2 set PHP settings in nginx.conf</strong></p>
      <div class="example-contents">
<div class="inicode"><pre class="inicode">set $php_value &quot;pcre.backtrack_limit=424242&quot;;
set $php_value &quot;$php_value \n pcre.recursion_limit=99999&quot;;
fastcgi_param  PHP_VALUE $php_value;

fastcgi_param  PHP_ADMIN_VALUE &quot;open_basedir=/var/www/htdocs&quot;;</pre>
</div>
      </div>

     </div>
     <div class="caution"><strong class="caution">Caution</strong>
      <p class="para">
       Because these settings are passed to php-fpm as fastcgi headers,
       php-fpm should not be bound to a worldwide accessible address.
       Otherwise, anyone could alter the PHP configuration options.
       See also
       <a href="install.fpm.configuration.php#listen-allowed-clients" class="link">listen.allowed_clients</a>.
      </p>
     </div>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <span class="simpara">
       Pools are not a security mechanism, because they do not provide full
       separation; e.g. all pools would use a single OPcache instance.
      </span>
     </p></blockquote>
    </p>
   </div>

  </div><?php manual_footer($setup); ?>