如何讓PHP能夠讀取系統環境變量?
一、fpm模式
1、通過服務器傳遞
如在nginx的配置里設置:
fastcgi_param ENV_XXX 123456;
每次頁面請求nginx都會將此變量傳遞給php,php可以通過getenv函數或$_SERVER全局變量獲得。
2、通過fpm配置傳遞
fpm在每次啟動時都會讀取php-fpm.conf文件中的環境變量設置,如:
env[ENV_XXX]="test test"
或者讓fpm讀取系統環境變量,如:
env[ENV_XXX]=$ENV_XXX
注意此種方式要確保系統環境變量存在,且不被sudo禁用。
如果fpm是用sudo方式啟動,默認sudo會禁用一些環境變量,可以通過以下方式放開限制:
vim /etc/sudoers
Defaults env_reset
Defaults env_keep = "ENV_XXX"
或者干脆放開所有限制:
Defaults !env_reset
最后,如果修改了php-fpm.conf中的設置需要重啟fpm才能生效,同樣php可以通過getenv函數或$_SERVER全局變量獲得環境變量。
二、命令行模式
命令行模式限制較少,可以通過getenv函數或$_SERVER全局變量獲取對當前執行用戶有效的系統環境變量,同樣要注意sudo的限制。