我如何创build一个单独的configuration文件的PHP(cli)和php-fpm在arch linux上

是否有可能为php(cli)和php-fpm创build单独的php.ini文件,就像在debian和ubuntu上可能有两个文件夹/etc/php/7.0/cli/etc/php/7.0/fpm

如果我可以为每个子系统加载一个conf.d目录的独立模块,我也会很酷。

有没有人有一个想法如何可以分别configuration它?

我也尝试使用它在ubuntu 16.04中configuration的结构,但没有成功。

您可以随时为cli版本执行此操作:

 php -c /path/to/your/php.ini

并使用通过php-fpm服务的默认值。 或者甚至更好,将其添加到您的login脚本

 #〜/ .bashrc
 #别名和个人function

 #PHP源码个人ini
别名php ='php -c /path/to/your/php.ini'

 #colorize ls
别名ls ='ls --color'
 ...

如果你已经说过你正在使用哪个版本,那会更好

我发现了一些调整来解决我的问题。

第一 :加载一个单独的php.ini文件:

Arch Linux论坛中的用户从man php页面发布了这个post:

 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. 

如果我创build一个/etc/php/php-cli.ini文件,只有这个文件会被加载,而不是/etc/php/php.iniphp cli命令。 php-fpm仍在加载/etc/php/php.ini

第二 :加载不同的模块configuration:

我在PHP文档中find了PHP_INI_SCAN_DIR环境variables。 因此,我将/usr/lib/systemd/system/php-fpm.service文件移至/etc/systemd/system/php-fpm.service ,并将以下configuration添加到服务文件中:

 [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 

重新启动/重新加载服务之后,php-fpm只加载/etc/php/fpm/conf.d的文件,不再从/etc/php/conf.d加载。 这使我可以分别configurationcli和fpm。

也许这不是最好的解决scheme,但我适合我的用例。 如果每个人都有一个更好的解决scheme,不要犹豫,发布你的答案!