PHP .env 多环境部署
在 Laravel 中,可以通过 .env 文件中的 APP_ENV 来区分不同的环境。虽然 Laravel 没有直接类似于 Spring Boot 的多环境配置文件(如 application-dev.yml 和 application-prod.yml),但可以使用 .env 文件以及一些环境管理技巧来实现相似的效果。
实现步骤
-
创建多个环境配置文件: Laravel 默认加载项目根目录下的
.env文件,你可以为不同环境创建多个.env文件,如:-
.env.local -
.env.testing -
.env.production
-
-
切换环境: 在部署时将所需环境的配置文件内容复制到
.env中,或使用特定的.env文件替换当前的.env文件。可以通过设置APP_ENV变量来指定环境类型。例如:env 复制代码 APP_ENV=local APP_ENV=production -
自动加载特定的 .env 文件: 若需要动态加载不同环境的
.env文件,可以在bootstrap/app.php中配置加载逻辑。例如:php 复制代码 $app = new Illuminate\Foundation\Application( $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) ); $appEnv = $_SERVER['APP_ENV'] ?? 'local'; $dotenv = Dotenv\Dotenv::createMutable(base_path(), ".env.{$appEnv}"); $dotenv->safeLoad(); -
使用环境变量: 使用
env('APP_ENV')来检测当前环境,例如,在代码中区分生产和测试环境:php 复制代码 if (env('APP_ENV') === 'production') { // 生产环境的配置 } else { // 非生产环境的配置 }
自动化的环境切换
可以在部署时通过脚本或 CI/CD 管理工具(如 Jenkins、GitLab CI)动态切换到对应的 .env 文件,或者指定环境变量 APP_ENV 来自动匹配相应的配置文件。
No Comments