Linux

在 Apache 和系統中設置環境變數

  • March 27, 2019

我想在系統和 httpd 中設置一個環境變數。

我將變數設置為IMPORTANT_FOLDER = /MY/PATHin /etc/profile,它適用於所有系統使用者。

我想要做的是把這個變數帶入httpd,這樣它就可以被一些php程式碼使用。SetEnv IMPORTANT_FOLDER = /MY/PATH我設法僅通過添加我的 httpd 配置來使 var 可用。

您能否提供一種將系統變數傳遞給 apache 的方法?對我來說重要的是讓它集中化。

我用apache 2.4的是redhat7。

謝謝你。

我相信您可以在 Apache 配置文件中使用 SetEnv 指令。該文件可以是 httpd.conf 文件,或者您在 /etc/httpd/conf.d 或您的文件所在的任何位置創建一個單獨的文件。

例如:

SetEnv IMPORTANT_FOLDER = /MY/PATH

當 Apache 伺服器啟動時,您應該能夠在 Apache 環境中“看到”該變數。

另一種方法是修改 HTTPD 初始化腳本 (/etc/init.d/httpd)。在以下範例中,我創建了一個函式,該函式在啟動 Apache 伺服器之前讀取鑰匙串(管理 ssh-agent 程序的實用程序)創建文件的輸出並將其放置在特定的配置文件中。

這裡的原則是在啟動 Apache 之前使用 init shell 腳本修改 Apache 配置文件(在本例中位於 /etc/httpd/conf.d 中)。

setKeychain() {

   if [ -a $(cat /etc/passwd | grep ^apache: | cut -d':' -f6)/.keychain/$(uname -n | cut -d' ' -f1)-sh ] ; then
       SSH_AUTH_SOCK=$(cat $(cat /etc/passwd | grep ^apache: | cut -d':' -f6)/.keychain/$(uname -n | cut -d' ' -f1)-sh | cut -d'=' -f2 | cut -d' ' -f1 | head -1 | sed 's/;$//g')
       SSH_AGENT_PID=$(cat $(cat /etc/passwd | grep ^apache: | cut -d':' -f6)/.keychain/$(uname -n | cut -d' ' -f1)-sh | cut -d'=' -f2 | cut -d' ' -f1 | tail -1 | sed 's/;$//g')

       echo "SetEnv SSH_AGENT_PID $SSH_AGENT_PID" > /etc/httpd/conf.d/keychain.conf
       echo "SetEnv SSH_AUTH_SOCK $SSH_AUTH_SOCK" >> /etc/httpd/conf.d/keychain.conf
       chmod 644 /etc/httpd/conf.d/keychain.conf
   fi

}

在初始化腳本的“開始”函式中,我在開頭添加了以下內容:

start() {

       setKeychain

這將執行前面的函式,該函式在啟動 Apache 之前“動態地”設置值。您可以修改它以獲取任何類型的系統變數。

引用自:https://serverfault.com/questions/959890