项目需求不同,要求也不同,这个仅供参考,相互学习,共同进步
前提
主要实现方法是自己提供的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; |