Laravel 所有的配置文件都存放在 config 目录下,每个配置项都有文档。

Laravel 使用 PHP 的扩展库 DotEnv 来实现这以功能,在根目录有一个 .env.example 文件,可以手动将该文件命名为 .env

不要将 .env 文件提交到代码管理仓库,防止敏感信息泄露,.env.example 文件则应该提交,这可以让其他开发者清楚运行你的应用需要配置哪些环境变量。

还可以创建一个 .env.testing 文件,该文件会在运行 PHPUnit 测试或执行带有 --env=testing 选项的 Artisan 命令时覆盖从 .env 文件读取的值。

获取环境变量

应用每次接受请求时,.env 中列出的所有配置及其对应值都会被载入到 PHP 的超全局变量 $_ENV 中,然后你就可以在应用中通过辅助函数 env() 来获取这些配置值。例如配置文件中的使用。

  1. 'debug' = env('APP_DEBUG', false);

其中,传递到 env() 的第二个参数时默认值,如果环境变量没有被配置就会使用该默认值。

判断当前应用环境

当前应用环境由 .env 文件中的 APP_ENV 变量决定。
可以通过 App 门面(Facades)上的 environment() 方法来访问其值。

use Illuminate\Support\Facades\App;

$environment = App::environment();

也可以向 environment() 方法传递参数来判断当前环境是否匹配给定的值,如果需要的甚至可以传递多个值。
如果当前环境与给定的值匹配,该方法返回 true

if (App::environment('local')) {
    // The environment is local
}

if (App::environment('local', 'staging')) {
    // The environment is either local OR staging...
}

访问配置值

可以使用全局辅助函数 config() 在应用代码的任意位置访问配置值。
配置值通过 [配置文件名 + “.” + 配置项] 的方式进行访问,当配置项没有被配置时,返回默认值。

$value = config("app.debug");

$value = config("app.timezone", 'Asia/Shanghai')

如果要在运行时设置配置项,传递数组参数到 config() 方法即可

config(['app.timezone' => 'Asia/Shanghai']);

缓存配置文件

为了给应用程序加速,可以使用 Artisan 命令 config:cache 来将所有配置文件的配置缓存到单个文件中,这将会把所有配置项合并到单个文件,从而被框架快速加载。

php artisan config:cache

应用每次上线,都要运行一次该命令,来重新缓存配置文件