How can I create separate configuration files for php (cli) and php-fpm on an arch linux
I have found a few tweaks to solve my problem.
First: load a separate
A user in a arch linux forum posted this from the
man php page:
FILES php-cli.ini The configuration file for the CLI version of PHP. php.ini The standard configuration file will only be used when php-cli.ini cannot be found.
If I creating a
/etc/php/php-cli.ini file only this file will be loaded and not
/etc/php/php.ini with the
php cli command.
php-fpm is still loading the
Second: load different module configurations:
I have found in the php documentation the
PHP_INI_SCAN_DIR environment variable.
Therefore I have moved the
/usr/lib/systemd/system/php-fpm.service file to
/etc/systemd/system/php-fpm.service and added the following configuration to the service file:
[Unit] Description=The PHP FastCGI Process Manager After=syslog.target network.target [Service] Type=notify Environment="PHP_INI_SCAN_DIR=/etc/php/fpm/conf.d" ; <-- I have added this line PIDFile=/run/php-fpm/php-fpm.pid ExecStart=/usr/bin/php-fpm --nodaemonize --fpm-config /etc/php/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
After restarting/reloading the services, php-fpm loads only the files from
/etc/php/fpm/conf.d and no longer from
/etc/php/conf.d. This allows me to configure cli and fpm separately.
Perhaps this is not the best solution but I fits to my usecase. If everyone have a better solution, don't hesitate to post your answer!
You can always do this for the cli version:
php -c /path/to/your/php.ini
and leave the defaults with the ones served over php-fpm. Or even better, add this to your login scripts
# ~/.bashrc # aliases and personal functions # PHP source personal ini alias php='php -c /path/to/your/php.ini' # colorize ls alias ls='ls --color' ...
It would have been better if you had stated which version(s) you are using