繁体   English   中英

php-fpm服务可以解释www.conf中的环境变量以创建唯一的日志文件吗?

[英]Can php-fpm service interpret environment variables inside www.conf to create unique log files?

我正在尝试在ALB后面设置多个云服务器,以将其日志文件写入我的通用EFS。 我有一个共享的驱动器EFS,可以通过一个开发实例访问该文件,而所有生产实例都安全地位于VCN的后面。 我正在尝试使用系统环境变量(特别是HOSTNAME),以便每个使用相同配置文件启动php-fpm的生产实例(以便我可以进行自动缩放)编写不同的日志。

我已经看到回答说使用环境变量的* nix方法应该可以,但是它们对我不起作用。 具体来说,$ {HOSTNAME}返回空白(我已经检查了它是否为apache和root用户设置; root启动php-frm服务)。 我还尝试了插值,以及“%()”的bash风格。 他们都不工作。

它们全部返回空字符串(但不返回错误)。

我确实在我的环境变量中创建了一个变量,并使它起作用。

我还读到您不能直接给变量分配env值,但是当我尝试创建一个单独的变量时,实际上在启动服务时返回了错误。

这是我期望的工作方式:

slowlog = "/shared/logs/php-fpm/www-slow-${HOSTNAME}.log"

尝试了以下所有条件:

slowlog = "/shared/logs/php-fpm/www-slow-".${HOSTNAME}.".log"

->主机名空白

slowlog = "/shared/logs/php-fpm/www-slow-${HOSTNAME}.log"

->主机名空白

slowlog = "/shared/logs/php-fpm/www-slow-%(HOSTNAME).log"

->文件名包含%(HOSTNAME)

slowlog = "/shared/logs/php-fpm/www-slow-$HOSTNAME.log"

->文件名包括$ HOSTNAME

slowlog = "/shared/logs/php-fpm/www-slow-{$HOSTNAME}.log"

->文件名包括{$ HOSTNAME}

slowlog_name = "/shared/logs/php-fpm/www-slow-{$HOSTNAME}.log"
slowlog = slowlog_name

->启动错误:未知变量slowlog_name

感谢您的提示/建议!

PHP 7.3确实支持对配置文件中的日志文件名进行环境变量插值-我刚刚对此进行了测试。 我怀疑在bash中您会陷入困境, $HOSTNAME是bash变量,但不能自动成为环境变量,并且Linux系统在$HOSTNAME是否设置为环境变量方面有所不同。 RedHat发行版会设置它,Ubuntu不会:

jacob@nitrogen ~ $ cat /etc/redhat-release 
Fedora release 29 (Twenty Nine)
jacob@nitrogen ~ $ echo $HOSTNAME
nitrogen
jacob@nitrogen ~ $ env | grep HOSTNAME
HOSTNAME=nitrogen

jacob@iad11:~$ grep PRETTY_NAME /etc/os-release 
PRETTY_NAME="Ubuntu 18.04.2 LTS"
jacob@iad11:~$ echo $HOSTNAME
iad11
jacob@iad11:~$ env | grep HOSTNAME

您可以使用其他环境变量进行测试,然后在自定义启动脚本中设置$HOSTNAME ,然后启动PHP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM