專案需求不同,要求也不同,這個僅供參考,相互學習,共同進步
前提
主要實現方法是自己提供的useEnvironmentPath(),有興趣的同學可以去研究下.
每個公司的要求不一樣,有的習慣進行條件編譯載入配置檔案,有的不需要條件編譯,怕安全洩露token等關鍵資訊,手動修改配置資訊.
像國內小公司基本不怎麼分測試環境,正式環境,更沒有減振環境,屬於直接替換配置檔案.所以呢進來看看學習學習.公司遇到過手動修改配置檔案,正式上線後整個專案崩潰的情況.調查結果有個配置檔案忘記寫了.我覺得只要有人手動替換這種操作的,稍不注意就會出問題.
如果你很不細心,這個一定要時刻準備著,準備跑路.
一. 配置env資料夾
刪除自帶的.env等檔案
新增env資料夾
並新增.dev.env, .stage.env, .prod.env檔案
二. 修改app.php
//...
//...
//忽略上面程式碼
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
//**********************程式碼新增到這塊*******************************//
/**根據伺服器的hostname,載入不同的.env檔案
*獲取主機名
*這裡方式可以根據自己需求修改 可以根據自己域名區分.
*我的這裡根據伺服器的hostname進行區分
*dev環境hostname:dev-projectname-api-web
*stage環境hostname:stage-projectname-api-web
*prod環境hostname:prod-projectname-api-web
*/
$hostname = gethostname();
//自定義env檔案路徑
$app->useEnvironmentPath(realpath(__DIR__.'/../env'));
$strProd = 'prod';
$strStage = 'stage';
$strDev = 'dev';
if (strpos($hostname, $strProd) !== false) {
//prod環境
$app->loadEnvironmentFrom('.prod.env');
} elseif (strpos($hostname, $strStage) !== false) {
//stage環境
$app->loadEnvironmentFrom('.stage.env');
} elseif (strpos($hostname, $strDev) !== false) {
//dev環境
$app->loadEnvironmentFrom('.dev.env');
} else {
//其他情況,走dev分支
$app->loadEnvironmentFrom('.dev.env');
}
//**********************程式碼新增到這塊*******************************//
return $app;
本作品採用《CC 協議》,轉載必須註明作者和本文連結