Laravel 所有的配置文件都存放在 config
目录下,每个配置项都有文档。
Laravel 使用 PHP 的扩展库 DotEnv 来实现这以功能,在根目录有一个 .env.example
文件,可以手动将该文件命名为 .env
。
不要将 .env
文件提交到代码管理仓库,防止敏感信息泄露,.env.example
文件则应该提交,这可以让其他开发者清楚运行你的应用需要配置哪些环境变量。
还可以创建一个 .env.testing
文件,该文件会在运行 PHPUnit 测试或执行带有 --env=testing
选项的 Artisan 命令时覆盖从 .env
文件读取的值。
获取环境变量
应用每次接受请求时,.env
中列出的所有配置及其对应值都会被载入到 PHP 的超全局变量 $_ENV
中,然后你就可以在应用中通过辅助函数 env()
来获取这些配置值。例如配置文件中的使用。
'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
应用每次上线,都要运行一次该命令,来重新缓存配置文件