PHP-FPM Code and FileSystem Layout for EasyApache 4
Last modified: July 13, 2022
Overview
This document explains the following information about the PHP FastCGI Process Manager (PHP-FPM) daemon:
- The PHP-FPM filesystem layout.
- How the system implements PHP-FPM on your system.
PHP-FPM provides an alternative FastCGI daemon for PHP that allows a website to handle significant loads. It allows a host to set specific amounts of resources to process a domain’s requests via workers available to respond to PHP requests (pools). These pools allow a website to process more requests.
PHP-FPM functions more quickly than traditional CGI-based methods, such as SUPHP, for multi-user PHP environments. It does not overload a system’s memory with PHP from Apache processes, such as the ruid2+php-dso
process. PHP-FPM only executes PHP requests, which enables it to service content quicker than other methods.
PHP-FPM implementation
The Cpanel::PHPFPM (Cpanel/PHPFPM.pm)
module provides the basis of EasyApache support with PHP-FPM. The module’s built-in defaults generate configuration files that provide fully functional PHP-FPM pools for a domain.
The system uses the following configuration files:
/var/cpanel/ApachePHPFPM/system.yaml
/var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
You will need to create these two files manually. To do this, perform the following steps:
-
Create the
/var/cpanel/ApachePHPFPM/
directory.mkdir -p /var/cpanel/ApachePHPFPM/
-
Create the two files.
1 2
touch /var/cpanel/ApachePHPFPM/system.yaml touch /var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
File contents
Each file contains different directives from the built-in values.
- The system does not require these files to run because the built-in defaults enable the PHP-FPM to run sufficiently.
- Only include the differences in directives within these files.
The following example displays the system.yaml
file’s contents:
|
|
- This example only uses a different value than the built-in default for the
daemonize
setting. - The
system-pool-defaults.yaml
file applies the value to each pool that you create. - Each domain in the system requires that you create one pool.
- Replace any unacceptable characters such as
.[]()
with an underscore_
.
The table below contains examples of unacceptable value names.
Old Name | New Name |
---|---|
syslog.facility |
syslog_facility |
php_admin_value[disable_functions] |
php_admin_value_disable_functions |
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 securephp.net’s FastCGI Process Manager (FPM) documentation.
The filesystem configuration files
The system stores the configuration files that control PHP-FPM in the following files:
/opt/cpanel/ea-php80/root/etc/php-fpm.conf
— This file contains the system configurations of PHP-FPM./opt/cpanel/ea-php80/root/etc/php-fpm.d/[domain].conf
— This file changes your domain to the domain setting of the website that you use. For example, thecptest1.tld.conf
domain.
The .yaml
files within the /var/cpanel
directories generate these two files.
- Do not edit these configuration files manually.
- The system duplicates these configuration files for each version that you select.
- The
/opt/cpanel/ea-php80/root/etc/php-fpm.d/[domain].conf
file displaysea-php80
orphp80
as its version. - You must change
ea-php80
to the version on which your system currently runs. For example, if your system runs on PHP version 7.3 or 7.4, changeea-php80
toea-php73
orea-php74
.
Required files
Use the required file /var/cpanel/userdata/[user]/[domain].php-fpm.yaml
only if you wish to run PHP-FPM.
/var/cpanel/userdata/[user]/[domain].php-fpm.yaml
— This file controls a specific domain’s pool. The system uses the built-in default values andsystem_pool_defaults
values to generate the[domain].conf
file.
Optional files
Use the following optional files only if you wish to change the default parameters. All domain pools use these defaults unless a .yaml
file overrides them.
/var/cpanel/ApachePHPFPM/system.yaml
— This file contains system level settings. The system also uses this file to generate the/opt/cpanel/ea-php5?/root/etc/php-fpm.conf
file, where the?
indicates that the system uses this file to generate all of the PHP versions in thephp-fpm.conf
file./var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
— The system uses this file to generate each domain’s pool and configure each user’s pool.Important:If you edit a user’s pool in WHM’s MultiPHP Manager interface (WHM » Home » Software » MultiPHP Manager), the system no longer applies the system default settings to that user.
Restore PHP to your system
The system cannot remove configurations or other related files when you manually remove packages. If you manually remove packages, you could remove dependencies that your hosted websites require.
We do not recommend that you remove any ea-php
packages via your server’s package manager. If you remove PHP from your system while any of your hosted websites still use it, those websites will display errors. In addition, Apache could fail to display the website entirely. Before you remove a package, confirm that none of your hosted websites use the PHP version that you wish to remove with WHM’s MultiPHP Manager interface (WHM » Home » Software » MultiPHP Manager).
To restore PHP versions to your system, run the following commands:
|
|
If the above commands fail, contact your system administrator.