.env app.php,Laravel下.env多环境配置笔记!

一.把.env文件另存为.env.local为本地开发环境,添加APP_ENV=local,

另存为.env.testing为测试环境,添加APP_ENV=testing,

另存为.env.production为生产环境,添加APP_ENV=production,

同理可以设置N多个...

二.打开项目下bootstrap下的app.php ,加入如下代码:

//.env配置多环境

$env = $app->detectEnvironment(function () {

$environmentPath = __DIR__ . '/../';//项目根目录,.env所在目录

$setEnv = trim(file_get_contents($environmentPath.'.env'));//获取.env文件内容

if(file_exists($environmentPath)) {

putenv("APP_ENV=$setEnv");

if(getenv('APP_ENV') && file_exists($environmentPath.'.' . getenv('APP_ENV') . '.env')) {

Dotenv::load($environmentPath, '.' . getenv('APP_ENV') . '.env');//配置的.env文件存在则加载

}

}

});

62d1f8e44f81?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

以上代码优化如下:

//.env配置多环境

$env = $app->detectEnvironment(function () use($app) {

$environmentPath = $app->environmentPath();//.env所在目录

// putenv("APP_ENV=$setEnv");//写入env //getenv('APP_ENV');//获取env

$setEnv = trim(file_get_contents($environmentPath.'/.env'));//获取.env文件内容

if(file_exists($environmentPath)) {

$app->loadEnvironmentFrom('.env.'.$setEnv);

}

});

三.把.env文件清空,里面写入local,testing,production等,则可以切换对应的环境。

继续优化,把这段代码移到index.php文件中,如下:

$app = require_once __DIR__.'/../bootstrap/app.php';

# .env配置多环境

$app->detectEnvironment(function () use($app) {

$envName = trim(file_get_contents($app->environmentPath().'/.env'));//获取默认env文件配置要加载的env文件名

$app->loadEnvironmentFrom('.env.'.$envName);

});

继续优化成一行代码,把index.php忽略git版本控制,实现多环境互不干扰!

$app = require_once __DIR__.'/../bootstrap/app.php';

$app->loadEnvironmentFrom('.env.online');# .env配置多环境,只此一行

在Providers/AppServiceProvider中的register方法判断环境加载所需服务!

if ($this->app->environment() !== 'online') {

$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值