不知道,大家都是怎麼樣定義自己的項目的運行環境的,我說的環境是線上(master),測試(beta),開發(dev),本地(local)這種,像我們是通過設定機器的host來做到的
// 環境選擇if (gethostname() === 'TBJ-Test') { define('ENV_MODE', 'dev');} elseif (gethostname() === 'TBJBeta') { define('ENV_MODE', 'beta');} elseif (strpos(gethostname(), 'TBJ-') === 0) { define('ENV_MODE', 'local');} else { define('ENV_MODE', 'online');}
不知道大家都有什麼比這個更好的方法?
回複內容:
不知道,大家都是怎麼樣定義自己的項目的運行環境的,我說的環境是線上(master),測試(beta),開發(dev),本地(local)這種,像我們是通過設定機器的host來做到的
// 環境選擇if (gethostname() === 'TBJ-Test') { define('ENV_MODE', 'dev');} elseif (gethostname() === 'TBJBeta') { define('ENV_MODE', 'beta');} elseif (strpos(gethostname(), 'TBJ-') === 0) { define('ENV_MODE', 'local');} else { define('ENV_MODE', 'online');}
不知道大家都有什麼比這個更好的方法?
我這有兩種方案:
一是在設定檔裡寫。不過這種方法不太好用,特別是項目有版本庫已經需要持續整合的時候,會比較麻煩。
二是通過特定的檔案來識別,比如上線版裡有個release.lock
的空檔案,程式檢測到這個檔案就認為是上線版,在入版本庫的時候可以將這幾個識別檔案忽略掉。
差不多,是在伺服器上,自訂環境變數
比如 laravel,在 nginx 的設定檔裡
fastcgi_param APP_ENV testing;
然後. env檔案的尾碼根據環境變數載入,會載入.env.testing設定檔
所以現在也比較習慣用這種形式