[版权声明] 本站内容采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN) 进行许可。
部分内容和资源来自网络,纯学习研究使用。如有侵犯您的权益,请及时联系我,我将尽快处理。
如转载请注明来自: Broly的博客,本文链接: Lumen配置多环境.env文件
Lumen的配置跟Laravel有些区别,虽然也能配置config/app.php这些,但并不是所有配置都能被覆盖,比如APP_TIMEZONE,参考:https://stackoverflow.com/a/49431500
默认也只是加载.env文件,并不支持多env环境配置。所以稍加改造实现这个功能:
测试环境:Lumen 6.x
一、新建配置文件
复制一份 .env.example 并命名为 .env.production 。这份就是用于production环境的配置文件。
二、编辑 bootstrap/app.php
原文件的头几行代码如下,
1 2 3 4 5 6 7 8 9 |
<?php require_once __DIR__.'/../vendor/autoload.php'; (new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables( dirname(__DIR__) ))->bootstrap(); ... |
改成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php require_once __DIR__.'/../vendor/autoload.php'; $appEnvFile = null; if ($appEnv = env('APP_ENV')) { $file = ".env.$appEnv"; if (file_exists(dirname(__DIR__) . '/' . $file)) { $appEnvFile = $file; } } (new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables( dirname(__DIR__), $envFileName ))->bootstrap(); |
三、配置NGINX
PHP部分的配置如下
1 2 3 4 5 |
location ~ \.php { ... fastcgi_param APP_ENV production; ... } |
总结
实现的原理就是,通过NGINX设置APP_ENV的值,然后Lumen代码再根据APP_ENV的值,加载对应的env文件;如果找不到默认加载的是.env