簡體   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