How to Manage Your php.ini Directives with PHP FPM


Last modified: August 28, 2019

Introduction

This tutorial explains how to manage php.ini file directives when you enable PHP-FPM. For more information, read our PHP-FPM documentation.

Note:
  • In cPanel & WHM version 78 and later, you can edit php.ini directives at the domain and system level in WHM's MultiPHP Manager interface (WHM >> Home >> Software >> MultiPHP Manager).
  • In cPanel & WHM version 76 and later, PHP-FPM is enabled by default.

Manage php.ini directives

Confirm that PHP-FPM exists on all of your accounts.

To confirm that PHP-FPM exists, perform the following steps:

  1. Log in to WHM as the root user.

  2. Navigate to WHM’s MultiPHP Manager interface (WHM >> Home >> Software >> MultiPHP Manager).

  3. In the domains table, locate the domain for which to manage php.ini settings.

  4. Under the PHP-FPM heading, confirm that the toggle is set to On.

Remember:
As of cPanel & WHM version 76, PHP-FPM is enabled by default.

Create a phpinfo file in the domain’s document root.

You can use phpinfo files to view a domain’s current PHP settings.

To create this file for the domain, perform the following steps:

  1. SSH in as the root user.

    Note:

    You can also use WHM's Terminal interface (WHM >> Home >> Server Configuration >> Terminal).

  2. Navigate to the domain’s document root directory.

  3. Create a phpinfo.php file.

  4. With a text editor, add the following information to the file:

    1
    2
    3
    4
    
    <?php
    // Show all information, defaults to INFO_ALL
    phpinfo();
    ?>

  5. Make certain that you perform the following actions:

    • Set the file’s user and group ownership to the cPanel account’s username.
    • Set the file’s permissions to 0644 permissions.
      Note:

      To do this, run the following series of commands:

      1
      2
      
      chmod 0644 /home/username/public_html/phpinfo.php
      chown username.username /home/username/public_html/phpinfo.php
      Where username represent’s the user’s username.

  6. To access the file in your web browser, navigate to https://example.com/phpinfo.php, where example.com is the domain. If PHP-FPM exists on the domain, the browser will display FPM/FastCGI as the ServerAPI key’s value.

Review the domain’s php.ini directives.

You can review php.ini directives in either of the following interfaces:

  • Review a domain’s php.ini directives in cPanel’s MultiPHP Manager interface (cPanel >> Home >> Software >> MultiPHP INI Editor).

  • Review the global php.ini directives in WHM’s MultiPHP Manager interface (WHM >> Home >> Software >> MultiPHP INI Editor).

The system sets the following php.ini directives by default:

1
2
3
4
5
6
7
php_admin_flag[allow_url_fopen] = on
php_admin_flag[log_errors] = on
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_value[doc_root] = "/home/username/public_html"
php_admin_value[error_log] = /home/username/logs/domain_com.php.error.log
php_admin_value[short_open_tag] = on
php_value[error_reporting] = E_ALL & ~E_NOTICE

Modify php.ini directives

Modify php.ini directives globally

To globally modify php.ini directives for each PHP version, use WHM’s MultiPHP Manager interface (WHM >> Home >> Software >> MultiPHP INI Editor).

To only modify specific php.ini directives for domains with PHP-FPM:

  1. Connect to the server via SSH.

  2. Create the /var/cpanel/ApachePHPFPM directory if it does not already exist.

  3. Create the /system_pool_defaults.yaml file.

  4. With a text editor, add your desired PHP-FPM pools. PHP-FPM pools let you configure websites and applications to run under their own users. For example:

    1
    2
    
    ---
    php_admin_value_memory_limit: { name: 'php_admin_value[memory_limit]', value: 120M }
    Note:

  5. Regenerate the PHP-FPM configuration files. To do this, run the following command:

    /usr/local/cpanel/scripts/php_fpm_config --rebuild

  6. Restart Apache and the PHP-FPM services. To do this, run the following commands:

    1
    2
    
        /usr/local/cpanel/scripts/restartsrv_apache_php_fpm
    /usr/local/cpanel/scripts/restartsrv_httpd    

Modify php.ini directives for an individual domain

To globally modify a domain’s php.ini directives for each PHP version, use cPanel’s MultiPHP INI Editor Editor interface (cPanel >> Home >> Software >> MultiPHP INI Editor).

To only modify specific php.ini directives for a domain:

  1. Connect to the server via SSH.

  2. Create the /var/cpanel/userdata/username/domain.com.php-fpm.yaml file if it does not already exist.

    Note:
    In this example, username represents the cPanel user’s username.

  3. With a text editor, add the directives that you want to modify to the file. For example, this file would disable the passthru and system directives:

    1
    2
    3
    
    ---
    _is_present: 1
    php_admin_value_disable_functions: { name: 'php_admin_value[disable_functions]', value: passthru,system }
    This file would enable all directives:
    1
    2
    3
    
    ---
    _is_present: 1
    php_admin_value_disable_functions: { name: 'php_admin_value[disable_functions]', value: none }
    Note:
    For a complete list of PHP-FPM user pool directives, read our Configuration Values of PHP-FPM documentation.

  4. Regenerate the PHP-FPM configuration files. To do this, run the following command:

    /usr/local/cpanel/scripts/php_fpm_config --rebuild

  5. Restart Apache and the PHP-FPM services. To do this, run the following commands:

    1
    2
    
    /usr/local/cpanel/scripts/restartsrv_apache_php_fpm
    /usr/local/cpanel/scripts/restartsrv_httpd

Additional Documentation