Laravel5中环境变量的载入

Laravel5中环境变量的载入

Bootstrap

在Kernel中可以发现第一个启动项就是关于ENV的

protected $bootstrappers = [
    ‘Illuminate\Foundation\Bootstrap\DetectEnvironment‘,
    ‘Illuminate\Foundation\Bootstrap\LoadConfiguration‘,
    ‘Illuminate\Foundation\Bootstrap\ConfigureLogging‘,
    ‘Illuminate\Foundation\Bootstrap\HandleExceptions‘,
    ‘Illuminate\Foundation\Bootstrap\RegisterFacades‘,
    ‘Illuminate\Foundation\Bootstrap\RegisterProviders‘,
    ‘Illuminate\Foundation\Bootstrap\BootProviders‘,
];

Illuminate\Foundation\Bootstrap\DetectEnvironment 在这个类中启动,进入查找,会发现

try
{
    Dotenv::load($app->basePath(), $app->environmentFile());
}
catch (InvalidArgumentException $e)
{
    //
}

$app->detectEnvironment(function()
{
    return env(‘APP_ENV‘, ‘production‘);
});

具体的方法就是Dotenv的一个静态load方法,并且如果读取失败,会默认设置为’production’

这里可以看到load传入的两个参数是为了找到读取文件的位置,$app->environmentFile()返回的是文件名,是$app->environmentFile,默认是.env。在$app中有一个方法:

public function loadEnvironmentFrom($file)
{
    $this->environmentFile = $file;

    return $this;
}

用这个方法可以修改载入env文件的名字。

解析ENV文件

Dotenv::load方法先判断文件is_readable 和 is_file,否则抛出异常。ini_get, ini_set设定auto_detect_line_endings为1,然后再设会原来的值。

file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

读出文件的每一行,然后foreach遍历,然后设置环境变量。可以发现,这里支持NestedVariable,就是说设置过的变量可以用$(VAR_EXISTS)在读取其值,类似shell。

设置变量存在于三个位置,putevn(), $_ENV, $_SERVER, 并且会判断是否key是否重复,如果重复就跳过。

读取时候也是从这三个位置, getenv(),$_ENV, $_SERVER。

app中的几个关于Env的方法:

public function environmentFile()默认返回’.env’

public function environment()不带参数,返回当前env的值;如果带参数(array),则遍历比对判断,如果包含当前环境名称,则返回true

public function isLocal() $app[‘env’]是否等于’local’

public function afterLoadingEnvironment(Closure $callback)

public function detectEnvironment(Closure $callback)

时间: 2024-08-02 07:02:43

Laravel5中环境变量的载入的相关文章

Linux中环境变量文件及配置

一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量.所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]: 1.系统级:(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件

Linux中环境变量文件

一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量.所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]: 1.系统级:(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件

Linux中环境变量文件及配置(转载)

一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量.所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]: 1.系统级:(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件

Linux中环境变量文件及配置(转)

一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量.所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]: 1.系统级:(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件

JavaSE中环境变量的配置

在说Java中环境变量配置之前,还是先说说JDK和JRE吧. JRE(Java Runtime Environment),即Java的运行环境.主要包括JVM(Java Virtual Machine,Java虚拟机)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可. JDK(Java Development Kit),即Java开发工具包.JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包含了JRE.安装了JDK之后就不用

shell中环境变量

Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量. 所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]: 系统级: /etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于登录到系统的每一个用户.该文件一般是调用/etc/bash.bashrc文件. /etc/bash.bashrc:系统级的bashrc

vue cli中环境变量和模式

环境变量配置 环境变量可以在以下文件中配置: .env # 在所有的环境中被载入 .env.local # 在所有的环境中被载入,但会被 git 忽略 .env.[mode] # 只在指定的模式中被载入 .env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略 (.local优先于.env生效) 文件内部使用键值对的方式对变量进行配置 被载入的变量将会对 vue-cli-service 的所有命令.插件和依赖可用,同时为一个特定模式准备的环境文件的 (例如 .env.

ubuntu下关于profile和bashrc中环境变量的理解

(0) 写在前面 有些名词可能需要解释一下.(也可以先不看这一节,在后面看到有疑惑再上来看相关解释) 启动bash shell:就是启动一个bash shell进程,通常可以理解为打开一个终端.需要注意的是如果你在终端输入sh后会发现自己又进入另一个交互式界面,这个时候其实fork了一个shell 子进程,如果你在这个交互式界面又输入了一次sh,那么相当于fork的shell子进程又fork了一个shell子进程,这个时候就启动了三个bash shell进程. 输入exit或者ctrl-d可以退

redhat中环境变量的创建

如果只是想在本次登录中使用某个环境变量,可以直接在终端中输入如下内容: export CVSROOT=:ext:[email protected]:/cvs/bv_sipexport CVS_RSH=ssh 执行完命令后用export命令调查发现环境变量中已经有了CVSROOT和CVS_RHS这两个环境变量 如果是针对单个用户配置的环境变量,只需进入相应用户的home目录下找到文件.bash_profile (注意此文件为隐藏文件,通过命令ls -al可以看到) vi .bash_profile