From cb985d6787f85eae3397c94527e083be7b38374d Mon Sep 17 00:00:00 2001 From: Sergio Cambra Date: Wed, 19 Feb 2020 14:42:39 +0100 Subject: [PATCH] feat(ini) support different settings for php.ini When php:version is a list, a dict with settings for different versions can be added under ini key of cli and fpm:config keys php: fpm: config: ini: settings: # global settings '5.6': # settings for 5.6 only cli: ini: settings: # global settings '5.6': # settings for 5.6 only --- php/cli/ini.sls | 17 ++++++++++++++++- php/fpm/config.sls | 18 ++++++++++++++++-- pillar.example | 10 ++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/php/cli/ini.sls b/php/cli/ini.sls index 4b7604c5..d3e60b4a 100644 --- a/php/cli/ini.sls +++ b/php/cli/ini.sls @@ -17,11 +17,26 @@ {%- for version in pillar_php_version %} {%- set first_version = pillar_php_version[0]|string %} {%- set ini = php.lookup.cli.ini|replace(first_version, version) %} + + {%- if version in php.cli.ini %} + {%- set settings_versioned = {} %} + {%- for key, value in settings.items() %} + {%- do settings_versioned.update({key: value.copy()}) %} + {%- endfor %} + {%- for key, value in php.cli.ini[version].items() %} + {%- if settings_versioned[key] is defined %} + {%- do settings_versioned[key].update(value) %} + {%- else %} + {%- do settings_versioned.update({key: value}) %} + {%- endif %} + {%- endfor %} + {%- endif %} + php_cli_ini_{{ version }}: {{ php_ini(ini, 'php_cli_ini_' ~ version, php.cli.ini.opts, - settings + settings_versioned | default(settings) ) }} {%- endfor %} {%- else %} diff --git a/php/fpm/config.sls b/php/fpm/config.sls index e7574eaa..673a3c0e 100644 --- a/php/fpm/config.sls +++ b/php/fpm/config.sls @@ -21,19 +21,33 @@ {%- set conf = php.lookup.fpm.conf|replace(first_version, version) %} {%- set pools = php.lookup.fpm.pools|replace(first_version, version) %} + {%- if version in php.fpm.config.ini %} + {%- set ini_settings_versioned = {} %} + {%- for key, value in ini_settings.items() %} + {%- do ini_settings_versioned.update({key: value.copy()}) %} + {%- endfor %} + {%- for key, value in php.fpm.config.ini[version].items() %} + {%- if ini_settings_versioned[key] is defined %} + {%- do ini_settings_versioned[key].update(value) %} + {%- else %} + {%- do ini_settings_versioned.update({key: value}) %} + {%- endif %} + {%- endfor %} + {%- endif %} + {%- for key, value in conf_settings.items() %} {%- if value is string %} {%- do conf_settings.update({key: value.replace(first_version, version)}) %} {%- endif %} {%- endfor %} - {%- do conf_settings.global.update({'pid': '/var/run/php' + version + '-fpm.pid' }) %} + {%- do conf_settings.global.update({'pid': '/run/php/php' + version + '-fpm.pid' }) %} {%- do conf_settings.global.update({'error_log': '/var/log/php' + version + '-fpm.log' }) %} php_fpm_ini_config_{{ version }}: {{ php_ini(ini, 'php_fpm_ini_config_' ~ version, php.fpm.config.ini.opts, - ini_settings + ini_settings_versioned | default(ini_settings) ) }} php_fpm_conf_config_{{ version }}: diff --git a/pillar.example b/pillar.example index 9b0b567d..71a89057 100644 --- a/pillar.example +++ b/pillar.example @@ -102,6 +102,11 @@ php: engine: 'Off' extension_dir: '/usr/lib/php/modules/' extension: [pdo_mysql.so, iconv.so, openssl.so] + # if a list of versions is set in php:version, each version + # may have different settings + # '7.2': + # PHP: + # short_open_tag: 'On' # options to manage the php-fpm conf file conf: @@ -169,6 +174,11 @@ php: settings: PHP: engine: 'Off' + # if a list of versions is set in php:version, each version + # may have different settings + # '7.2': + # PHP: + # short_open_tag: 'On' # php-xcache settings xcache: