我們寫的PHP應用程序,通常會分別在本地、開發、測試、RC、生產環境中運行,不同環境中全局變量各不相同。通常簡單的部署做法是,每次部署到一個環境,都需要先修改對應的全局變量,然后再部署代碼。如果部署頻率很高,則這種部署方案比較耗費人力,同時也會增加生產環境的部署風險。
如果將各種環境的差異配置在服務器中,PHP應用程序讀取當前環境下的變量,則大大降低了應用程序部署的成本與風險。
修改配置文件conf/fastcgi.conf,添加配置如:fastcgi_param MAIN_URL 'www.hicoor.com';
然后重啟nginx(命令:sbin/nginx -s reload),即可在PHP應用程序中通過$_SERVER['MAIN_URL']方式來獲取環境配置值。但這種配置方式會在php和nginx的大量請求中都帶上這些配置,會顯著增加系統開銷,因此一般不建議這種配置方式。
修改php-fpm配置文件php-fpm.conf(位置如:/usr/local/php/etc/php-fpm.conf),添加配置如:env[MAIN_URL] = www.hicoor.com
然后重啟php-fpm,關閉命令:ps -aux | grep php-fpm | awk '{print $2}' | xargs kill -9,或:killall nginx,啟動命令:/usr/local/php/sbin/php-fpm
重啟后即可在PHP中通過$_SERVER['MAIN_URL']方式來獲取環境配置值,這種配置方式比較建議使用。
修改配置文件conf/extra/httpd-vhosts.conf,在對應應用配置下新增環境變量配置,如:

<VirtualHost *:80> ServerAdmin webmaster@hduhans.xicp.net DocumentRoot "D:/wamp/www" ServerName hduhans.xicp.net ErrorLog "logs/dummy-host2.example.com-error.log" SetEnv MAIN_URL www.hicoor.com CustomLog "logs/dummy-host2.example.com-access.log" common </VirtualHost>
其中SetEnv所在行為新增配置,然后重啟apache服務器即完成配置。