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 php.ini
files:
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 /etc/php/php.ini
.
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