失业两个月找存在感系列——几行代码实现Laravel加载不同的 .env 环境文件,进而多环境部署
一套代码多环境部署
在实际开发中,为了减少线上bug。往往需要部署多套环境,一般来讲最低配也是测试环境和正式环境。如何区别两种环境进而加载不同环境下的配置文件呢,通常有两种做法。
- 在CICD时进行执行不同环境的部署脚本,脚本中选择对应环境下的 环境配置文件进行覆盖到真实要加载的位置。类似于下面
mv prod.env .env
- 设置环境变量,代码中通过获取环境变量的值是测试test还是正式prod,进而加载对应的配置文件,通常有两种方式设置环境变量,在服务器层面或者PHP配置环境层面
Laravel通过环境变量实现
修改php配置文件增加php的环境变量
LAJUN_PHP_ENV = 'prod'
增加.env配置文件目录
修改app启动加载逻辑
$app = new Illuminate\Foundation\Application( $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) ); $env = get_cfg_var('LAJUN_PHP_ENV'); //获取php层面的环境变量值 define('PROJECT_ENV', $env); //定义一个全局常量标识代码环境是测试还是正式 $app->loadEnvironmentFrom('envs/.' . $env . '.env');
重启php-fpm生效
欢迎评论补充更好的方法
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: