Having to customize the php-fpm pool configuration of a new server, I wonder if it is possible / allowed / recommended to have a new pool file, which name goes alphabetically after the original one, which only has values that override the initial configuration.
The original configuration is in /etc/php/7.0/fpm/pool.d
named www.conf
.
It seems, according to the pages related to the installation, engineers modify directly the original (saving a copy of the initial values). E.g.
[www]
...
user www-data
group www-data
pm.max_children 2
gives after modification
[www]
...
user myapp ; was www-data
group myapp ; was www-data
pm.max_children 8 ; was 2
But it seems that could be a task to be repeated after the next upgrade of php-fpm (furthermore the configuration is in a 7.0
path, that's worrying).
Instead of modifying the original file, I would like to keep it unchanged, and add another one, say wwwmyapp.conf
that would declare the same pool, and having only the values that have changed
in wwwmyapp.conf
[www] ; same pool!
user myapp
group myapp
pm.max_children 8
in pool.d
, list of files
www.conf
wwwmyapp.conf
since in php-fpm.conf
all pool conf files are loaded, the values of wwwmyapp
will be read after the ones of www
( in the same www
pool ) and should override the first values.
- It seems to work in a few tests and no error reported, but will it work all the time, and for all values?
- Should we overwrite the config file directly instead?
Couldn't find an answer in any doc, even on php.net.
Could not find an "official" confirmation from another source, but here is some outcome after doing some research:
Analyzing the source code of
php7.0-fpm
and more specificallyfpm-conf.c
, it appears thatphp-fpm.conf
is read first [ fpm_conf_load_ini_file() ],include
directives are read in order, giving a list of files thanks to glob(),include
will have a recursive call to the includes processing function, andGLOB_NOSORT
option)Thus we can assume - at least in this version but this is unlikely to change soon considering the present code - that it is safe to arrange the
pool.d
directory configuration files in alphabetical order ; any previously recorded value being overwritten by an entry with the same name read after.We have a clean way to handle configuration files for
php-fpm
, keeping the distribution ones untouched, and adding custom files having name alphabetically greater than the packaged ones, that contain the few options that have to be changed.In case u have some file like php-overrides.ini you should copy it to
/etc/php/7.0/fpm/conf.d/99-overrides.ini
99 prefix is due to order of execution
Overriding [www] pool values through custom
.conf
files:It is possible, and @breaking-not-so-bad explanation of how config files are loaded is great, I recommend you read it first.
But it is definitely worth emphasising the importance of config files naming (as it can be tricky):
z-www-overrides.conf
and it's overidden[www]
pool options - @istrangerAn example:
Creating a file
/etc/php/7.0/fpm/conf.d/z-www-overrides.conf
will override the settings inphp-fpm.conf
: