Linux
在 Apache 和系統中設置環境變數
我想在系統和 httpd 中設置一個環境變數。
我將變數設置為
IMPORTANT_FOLDER = /MY/PATH
in/etc/profile
,它適用於所有系統使用者。我想要做的是把這個變數帶入httpd,這樣它就可以被一些php程式碼使用。
SetEnv IMPORTANT_FOLDER = /MY/PATH
我設法僅通過添加我的 httpd 配置來使 var 可用。您能否提供一種將系統變數傳遞給 apache 的方法?對我來說重要的是讓它集中化。
我用
apache 2.4
的是redhat
7。謝謝你。
我相信您可以在 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 之前“動態地”設置值。您可以修改它以獲取任何類型的系統變數。