项目开发中,通常会有本地开发环境、内网测试环境、线上真实环境。这三种环境的配置通常都不尽相同,Laravel 可以通过环境变量  APP_ENV 的值来加载不同的 .env 配置文件。下面会介绍两种方法,分别是通过 Nginx 和 PHP-FPM 来设置 APP_ENV 环境变量的值。

方法一:修改 Nginx 配置文件设置 APP_ENV:

location = /index.php {
index index.php;
try_files $uri =404;
fastcgi_pass unix__tmp_php_cgi_sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param APP_ENV xxxx;
}

方法二:修改 PHP-FPM 配置文件设置 APP_ENV:

env[APP_ENV] = xxxx

上述两种方法只需二选一。重启 Nginx 和 PHP-FPM 服务,Laravel 框架就会自动选择加载项目根目录下的 .env.xxxx 配置文件,而不会去加载 .env 配置文件了。

通过 APP_ENV 环境变量值加载特定 .env 配置文件的 Laravel 源代码位于文件Illuminate/Foundation/Bootstrap/DetectEnvironment.php 中,摘录关键代码如下:

 /**
* Detect if a custom environment file matching the APP_ENV exists.
*
* @param \Illuminate\Contracts\Foundation\Application $app
* @return void
*/
protected function checkForSpecificEnvironmentFile($app)
{
if (! env('APP_ENV')) {
return;
} $file = $app->environmentFile().'.'.env('APP_ENV'); if (file_exists($app->environmentPath().'/'.$file)) {
$app->loadEnvironmentFrom($file);
}
}

请注意:

当设置了 APP_ENV 环境变量时,当运行 Laravel 的 Aritsan 终端命令之前,比如迁移命令(./artisan migrate)、启动队列侦听器(./artisan queue:listen)等等,均需要在终端也导入 APP_ENV 环境变量。

$ export APP_ENV=xxxx

$ ./artisan migrate

或者

$ APP_ENV=xxxx ./artisan migrate

当然,也可以选择在 ~/.bash_profile 或者 ~/.bashrc 中一劳永逸地设定好终端环境变量 APP_ENV 的值。

Laravel .env 多环境配置文件的更多相关文章

  1. Atiti. Php Laravel 5.1 环境搭建以及  error 排除

    Atiti. Php Laravel 5.1 环境搭建以及  error 排除 1. php_5.6.11_apache2.41 1.1. Httpd.Conf增加以下配置,添加php支持1 1.2. ...

  2. Bash环境配置文件

    一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc ...

  3. application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用

    一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...

  4. Bash Shell的环境配置文件

    login shell:取得bash时需要完整的登录流程 non-login shell:取得bash接口的方法不需要重复登录,举例来说,你以x window登录Linux后,再以x的图形界面启动终端 ...

  5. spring-boot多环境配置文件

    spring-boot多环境配置文件 目录 配置 多环境配置文件名称要遵循格式 application-{profile}.yml application.yml spring: profiles: ...

  6. bash 的环境配置文件

    http://www.cnblogs.com/ggjucheng/archive/2012/11/01/2750179.html bash 的环境配置文件 你是否会觉得奇怪,怎么我们什么动作都没有进行 ...

  7. Linux用户环境配置文件

    用户操作环境配置文件: 从/etc/skel目录复制过来 .bashrc             打开新终端           /etc/bashrc .bash_profile       用户登 ...

  8. Linux的环境配置文件----.bashrc文件(转)

    Linux的环境配置文件----.bashrc文件   .bashrc文件主要保存个人的一些个性化设置,如命令别名.路径等.也即在同一个服务器上,只对某个用户的个性化设置相关.它是一个隐藏文件,需要使 ...

  9. SpringProfile轻松切换多环境配置文件

    在项目开发的过程中,我们难免会遇到开发.测试.生产等环境的切换,而各个环境的配置肯定是不同的.传统的办法是在项目打包的时候修改配置文件.但人为做的事情难免产生意外.Spring 为我们提供了一种多环境 ...

随机推荐

  1. hdu 2615 Division(暴力)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2615 题解:挺简单的暴力枚举,小小的分治主要是看没人写题解就稍微写一下 #include <io ...

  2. 染色 Wannafly挑战赛20 A 思维

    链接:https://www.nowcoder.com/acm/contest/133/A来源:牛客网 现在有一棵被Samsara-Karma染了k种颜色的树,每种颜色有着不同的价值 Applese觉 ...

  3. CODE[VS] 3269 混合背包

    3269 混合背包  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 背包体积为V ,给出N ...

  4. window对象,BOM,window事件,延时器,DOM

    01.定时器补充 function fn(){    console.log(1);}setInterval("fn()",100);  //定时器调用匿名函数/*   funct ...

  5. 使用Elasticsearch7 java api实现pdf全文检索

    前提:pdf的内容是文字形式而不是图片形式! 一.方法 Elasticsearch实现pdf的全文检索,原理是将pdf转换为Base64,然后提取pdf的文字内容然后将其存储起来. Elasticse ...

  6. 2019icpc南昌网络赛_I_Yukino With Subinterval

    题意 给定一个序列,两种操作,单点修改,询问区间\([l,r]\)值域在\([x,y]\)范围内的连续段个数. 分析 原数组为\(a\),构造一个新的数组\(b\),\(b[i]=(a[i]==a[i ...

  7. 【Spring】编程式事务和声明式事务

    一.概述 二.准备工作 1. 创建表 2. 创建项目并引入Maven依赖 3. 编写实体类 4. 编写Dao层 5. 业务层 6. XML中的配置 7. 测试 三.编程式事务 1. 在业务层代码上使用 ...

  8. Oracle 11g Rac 用rman实现把本地数据文件迁移到ASM共享存储中

    在Oracle Rac环境中,数据文件都是要存放在ASM共享存储上的,这样两个节点才能同时访问.而当你在某一节点下把数据文件创建在本地磁盘的时候,那么在另一节点上要访问该数据文件的时候就会报错,因为找 ...

  9. Spring Boot与Spring MVC集成启动过程源码分析

    开源项目推荐 Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其通过收集jedis/mybatis/ht ...

  10. lambda表达式分类

    public class StreamTest { public static void main(String[] args) { createStream(); getForEach(); get ...