如何在Arch Linux上为php(cli)和php-fpm创建单独的配置文件


10

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

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

有谁知道如何单独配置它?

我也尝试使用ubuntu 16.04中配置的结构,但没有成功。

Answers:


11

我发现一些调整可以解决我的问题。

首先:加载一个单独的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文件,只有这个文件将被加载,而不是/etc/php/php.iniphpCLI命令。php-fpm仍在加载中/etc/php/php.ini

第二:加载不同的模块配置:

我在php文档中找到了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" ; <-- 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。这使我可以分别配置cli和fpm。

也许这不是最佳解决方案,但我适合我的用例。如果每个人都有更好的解决方案,请随时发布您的答案!


1
第二种方法对于调试非常有用,例如,您创建php-fpm服务和conf文件/目录的后缀副本,根据需要指定单独的fpm配置,还可以选择指定其他ini --php-ini,然后仅在第二种方法中加载xdebug服务。当然,第二项服务需要在其他端口/套接字上运行。我Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"在服务文件中设置了冒号,以使它加载除我复制到debugger.d目录中的xdebug之外的所有默认模块。
沃尔夫

3

您可以始终为cli版本执行此操作:

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

并将默认值保留为通过php-fpm提供的默认值。甚至更好,将其添加到您的登录脚本中

#〜/ .bashrc
#别名和个人功能

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

#着色ls
别名ls ='ls --color'
...

如果您说出您使用的是哪个版本会更好


好主意,但不完全是我要找的东西。也许如果没有其他办法。谢谢。
Fiete

好吧,也许有,请分享一下php,php-fpm的版本以及您的基本设置(您使用的是nginx,apache等)。您如何设置php-fpm。也许从那里,我们会有所帮助
the_architecht
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.