![](/img/trans.png)
[英]Amazon Linux AMI: Can't find PHP-FPM www.conf file for PHP 5.5.7 with Nginx
[英]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.