title: Configuration Values of PHP-FPM created at: Mon Oct 28 2024 05:40:52 GMT+0000 (Coordinated Universal Time) updated at: Sat Feb 08 2025 14:22:32 GMT+0000 (Coordinated Universal Time) --- # Configuration Values of PHP-FPM # Overview This document lists the PHP-FPM system’s configuration settings and their default values. This document also explains how to add additional settings to your system’s PHP-FPM configuration. You can configure some of the global directives and pool options through WHM’s [*MultiPHP Manager* ](https://docs.cpanel.net/whm/software/multiphp-manager-for-whm/) interface (*WHM » Home » Software » MultiPHP Manager*). !! Warning !! We **strongly** recommend that you only activate Apache PHP-FPM if your server has at least 2 GB of RAM available, or at least 30 MB of RAM per domain. If you enable PHP-FPM on a server with less than the required RAM, your server may experience severe performance issues. # Global directives cPanel & WHM uses template values for defaults. For example, when the `[% ea_php_version %]` template value appears in the `.yaml` file, the system replaces this value with the desired PHP version. The following list outlines the global directives labels: * `Key` — The entry in the `.yaml` file. * `Name` — The pool name in the `/var/cpanel/ApachePHPFPM/system_pool_defaults.yaml` configuration file. !! More\ For more information about pool names, read our [PHP-FPM Domain Pools](https://docs.cpanel.net/knowledge-base/php-fpm/php-fpm-domain-pools/) documentation. * `Present if not listed` — When you set this value to `Yes`, the system adds the value to the `/var/cpanel/userdata/user/domain.php-fpm.yaml` configuration file, where `user` represents the cPanel user’s name and `domain` represents the domain. * `Default` — The template value that resides in the `/var/cpanel/ApachePHPFPM/system.yaml` configuration file. For more information about creating the `/var/cpanel/ApachePHPFPM/system.yaml` file, read our [PHP-FPM implementation](https://docs.cpanel.net/knowledge-base/php-fpm/php-fpm-code-and-filesystem-layout-for-easyapache-4/#php-fpm-implementation) documentation. !! Warning !! You must normalize the period character `.` to an underscore character `_` for all key names when you create or modify the `/var/cpanel/ApachePHPFPM/system.yaml` file. For example, you would normalize `syslog.ident` to `syslog_ident`. Otherwise, the system may **not** accept the key name. !! Exercise **extreme** caution when you manually edit `.yaml` files. Incorrect syntax in these files will cause services to fail. We **strongly** suggest that you create a backup of your system before you manually edit `.yaml` files. | Key | Name | Present if not listed | Default | | ----------------------------- | ----------------------------- | --------------------- | ----------------------------------------------------------------------- | | `daemonize` | `daemonize` | Yes | `no` | | `emergency_restart_interval` | `emergency_restart_interval` | Yes | `0` | | `emergency_restart_threshold` | `emergency_restart_threshold` | Yes | `0` | | `error_log` | `error_log` | Yes | `/opt/cpanel/[% ea_php_version %]/root/usr/var/log/php-fpm/error.log` | | `events_mechanism` | `events.mechanism` | No | `N/A` | | `log_level` | `log_level` | Yes | `notice` | | `pid` | `pid` | Yes | `/opt/cpanel/[% ea_php_version %]/root/usr/var/run/php-fpm/php-fpm.pid` | | `process_control_timeout` | `process_control_timeout` | Yes | `10` | | `process_max` | `process_max` | No | `0` | | `process_priority` | `process.priority` | No | `N/A` | | `rlimit_core` | `rlimit_core` | No | `0` | | `rlimit_files` | `rlimit_files` | No | `N/A` | | `syslog_facility` | `syslog.facility` | No | `daemon` | | `syslog_ident` | `syslog.ident` | No | `php-fpm` | | `systemd_interval` | `systemd_interval` | No | `10` | # Pool name directives PHP-FPM pools allow you to configure different websites and applications to run under their own user. The following table lists directives that you can configure in the `/var/cpanel/ApachePHPFPM/system_pool_defaults.yaml` file. For more information about creating the `/var/cpanel/ApachePHPFPM/system_pool_defaults.yaml` file, read our [PHP-FPM implementation](https://docs.cpanel.net/knowledge-base/php-fpm/php-fpm-code-and-filesystem-layout-for-easyapache-4/#php-fpm-implementation) documentation. !! Important !! To avoid directive configuration errors, you must follow these syntax rules: !! You **must** use single quotation marks `' '` at the beginning and end of strings with double quotation marks `" "`. The YAML parser automatically removes quotation marks from string values. This means that values that require double quotation marks **must** use single quotation marks before and after the double quotation marks to retain their value. !! You **must** use an escape character `\` with any double quotation marks `" "` that you use inside of the string. | Key | Name | Present if not listed | Default | | ----------------------------------- | ------------------------------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `catch_workers_output` | `catch_workers_output` | Yes | `yes` | | `chdir` | `chdir` | Yes | `[% homedir %]` | | `chroot` | `chroot` | No | `N/A` | | `clear_env` | `clear_env` | No | `N/A` | | `group` | `group` | Yes | `nobody` | | `listen` | `listen` | Yes | `"[% socket_path %]"` | | `listen_acl_groups` | `listen.acl_groups` | No | `N/A` | | `listen_acl_users` | `listen.acl_users` | No | `N/A` | | `listen_allowed_clients` | `listen.allowed_clients` | No | `any` | | `listen_backlog` | `listen.backlog` | No | `-1` | | `listen_group` | `listen.group` | No | `nobody` | | `listen_mode` | `listen.mode` | No | `0660` | | `listen_owner` | `listen.owner` | No | `"[% username %]"` | | `php_admin_flag_allow_url_fopen` | `php_admin_flag[allow_url_fopen]` | Yes | `on` | | `php_admin_flag_log_errors` | `php_admin_flag[log_errors]` | Yes | `on` | | `php_admin_value_disable_functions` | `php_admin_value[disable_functions]` | Yes | `exec,passthru,shell_exec,system` | | `php_admin_value_doc_root` | `php_admin_value[doc_root]` | Yes | `[% documentroot %]`<br />!! Note<br />!! When you specify a vhost document root for subdomains, the system does **not** escape the vhost correctly in the subdomain’s PHP-FPM configuration file.<br />!! PHP-FPM does **not** process certain characters in the document root unless you add double quotes `""` around the document root.<br />!! You can also add the colon `:`, semicolon `;`, and parenthesis `()` characters to the document root. | | `php_admin_value_error_log` | `php_admin_value[error_log]` | Yes | `[% homedir %]/logs/[% scrubbed_domain %].php.error.log`<br />!! Note<br />!! The system normalizes the period character `.` to an underscore character `_` for the domain. For example, the `/home/example/logs/example.net.php.error.log` file becomes the `/home/example/logs/example_net.php.error.log` file, where `example` represents the username and `example_net` represents the domain name. | | `php_admin_value_short_open_tag` | `php_admin_value[short_open_tag]` | Yes | `on` | | `php_value_error_reporting` | `php_value[error_reporting]` | Yes | `E_ALL & ~E_NOTICE` | | `php_value_session_save_handler` | `php_value[session.save_handler]` | No | `N/A` | | `php_value_session_save_path` | `php_value[session.save_path]` | No | `N/A` | | `php_value_soap_wsdl_cache_dir` | `php_value[soap.wsdl_cache_dir]` | No | `N/A` | | `ping_path` | `ping.path` | Yes | `/ping` | | `pm` | `pm` | Yes | `ondemand` | | `pm_max_children` | `pm.max_children` | Yes | `5` | | `pm_max_requests` | `pm.max_requests` | Yes | `20` | | `pm_max_spare_servers` | `pm.max_spare_servers` | Yes | `5` | | `pm_min_spare_servers` | `pm.min_spare_servers` | Yes | `1` | | `pm_process_idle_timeout` | `pm.process_idle_timeout` | Yes | `10` | | `pm_start_servers` | `pm.start_servers` | Yes | `0` | | `pm_status_path` | `pm.status_path` | Yes | `/status` | | `request_slowlog_timeout` | `request_slowlog_timeout` | No | `N/A` | | `request_terminate_timeout` | `request_terminate_timeout` | No | `N/A` | | `rlimit_core` | `rlimit_core` | No | `N/A` | | `rlimit_files` | `rlimit_files` | No | `N/A` | | `security_limit_extensions` | `security.limit_extensions` | Yes | The system allows the following options:<br />- `.phtml` <br />- `.php` <br />- `.php3` <br />- `.php4` <br />- `.php5` <br />- `.php6` <br />- `.php7` | | `slowlog` | `slowlog` | No | `N/A` | | `user` | `user` | Yes | `"[% username %]"` | !! Note !! For more information about pool names, read our [PHP-FPM Domain Pools](https://docs.cpanel.net/knowledge-base/php-fpm/php-fpm-domain-pools/) documentation. ## Add a value to a configuration A complete configuration directive line would resemble the following example: ```yaml php_value_open_basedir: { name: "php_value[open_basedir]", value: "[% documentroot %]" } ``` This example contains the following values: * `php_value_open_basedir` represents the `Key` entry. * The `Key` entry must **only** contain letters, numbers, and underscores. * `php_value[openbasedir]` represents the pool name. * `documentroot` represents the configuration value. ## Add an unknown value to a configuration You can add a value that cPanel & WHM does not currently provide as a default with a YAML map. To create a YAML map, add a line to the configuration file that resembles the following example: ```yaml php_admin_value_ldap_max_links: { name: "php_admin_value[ldap.max_links]", value: -1 } ``` This example contains the following values: * `php_admin_value_ldap_max_links` represents the `Key` entry. * The `Key` entry must **only** contain letters, numbers, and underscores. * `php_admin_value[ldap.max_links]` represents the pool name. * `-1` represents the configuration value. !! Important !! If you prepend any PHP settings with the `php_value` or `php_flag` flags, the system will overwrite any previous `php.ini` values that you set in the user’s `.htaccess` files. To remove these flags, run the following commands: !! `find /home -type f -name '.htaccess' -exec grep -Hrn 'php_value' '{}' \;` !! `find /home -type f -name '.htaccess' -exec grep -Hrn 'php_flag' '{}' \;` !! If you prepend any PHP settings with the `disable functions` or `disable_classes` flags, the system will append the new `php.ini` value to the previous one in the user’s `.htaccess` files. For more information, read our [How to Manage Your php.ini Directives with PHP-FPM](https://docs.cpanel.net/knowledge-base/web-services/how-to-manage-your-php.ini-directives-with-php-fpm/) documentation.