我找到了一些调整来解决我的问题.
首先:加载一个单独的PHP.ini文件:
一个arch linux论坛中的用户从man PHP页面发布了这个:
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.
如果我创建一个/etc/PHP/PHP-cli.ini文件,只会加载这个文件,而不是使用PHP cli命令加载/etc/PHP/PHP.ini. PHP-fpm仍在加载/etc/PHP/PHP.ini.
第二:加载不同的模块配置:
我在php documentation中找到了PHP_INI_SCAN_DIR环境变量.
因此,我已将/usr/lib/systemd/system/PHP-fpm.service文件移至/etc/systemd/system/PHP-fpm.service,并将以下配置添加到服务文件中:
[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" ;
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
重新启动/重新加载服务后,PHP-fpm只加载/etc/PHP/fpm/conf.d中的文件,而不再加载/etc/PHP/conf.d中的文件.这允许我分别配置cli和fpm.
也许这不是最好的解决方案,但我适合我的用例.如果每个人都有更好的解决方案,请不要犹豫,发布您的答案!