配置信息
配置
介绍
Laravel 框架的所有配置文件都存储在 config
目录中。 每个选项都记录在案,因此请随意查看文件并熟悉可用的选项。
这些配置文件允许您配置诸如数据库连接信息、邮件服务器信息以及各种其他核心配置值(例如应用程序时区和加密密钥)之类的内容。
环境配置
根据应用程序运行的环境设置不同的配置值通常很有帮助。 例如,您可能希望在本地使用与在生产服务器上不同的缓存驱动程序。
为了让这件事变得轻而易举,Laravel 使用了 DotEnv PHP 库。 在全新的 Laravel 安装中,应用程序的根目录将包含一个 .env.example
文件,该文件定义了许多常见的环境变量。 在 Laravel 安装过程中,该文件会自动复制到 .env
。
Laravel 的默认 .env
文件包含一些常见的配置值,这些值可能会根据您的应用程序是在本地运行还是在生产 Web 服务器上运行而有所不同。 然后使用 Laravel 的 env
函数从 config
目录中的各种 Laravel 配置文件中检索这些值。
如果您正在与团队一起开发,您可能希望继续在您的应用程序中包含一个 .env.example
文件。 通过将占位符值放入示例配置文件中,您团队中的其他开发人员可以清楚地看到运行您的应用程序需要哪些环境变量。
技巧:
.env
文件中的任何变量都可以被外部环境变量覆盖,例如服务器级或系统级环境变量。
环境文件安全
您的 .env
文件不应提交给应用程序的源代码管理,因为每个使用您的应用程序的开发人员/服务器可能需要不同的环境配置。 此外,如果入侵者获得对您的源代码控制存储库的访问权限,这将是一个安全风险,因为任何敏感凭据都会被暴露。
附加环境文件
在加载应用程序的环境变量之前,Laravel 会确定是否已经从外部提供了 APP_ENV
环境变量,或者是否指定了 --env
CLI 参数。 如果是这样,Laravel 将尝试加载一个 .env.[APP_ENV]
文件(如果它存在)。 如果它不存在,将加载默认的 .env
文件。
环境变量类型
.env
文件中的所有变量通常都被解析为字符串,因此创建了一些保留值以允许您从 env()
函数返回更广泛的类型:
.env Value |
env() Value |
---|---|
true | (bool) true |
(true) | (bool) true |
false | (bool) false |
(false) | (bool) false |
empty | (string) ‘’ |
(empty) | (string) ‘’ |
null | (null) null |
(null) | (null) null |
如果您需要使用包含空格的值定义环境变量,可以通过将值括在双引号中来实现:
APP_NAME="My Application"
获取环境配置
当应用程序收到请求时,.env
文件中列出的所有变量将被加载到 PHP 的超级全局变量 $_ENV
中。你可以使用 env
函数检索这些变量的值。实际上,如果你看过 Laravel 的配置文件,就能注意到有数个选项已经使用了这个函数:
'debug' => env('APP_DEBUG', false),
env 函数的第二个参数是「默认值」。 当没有找到对应环境变量时将返回 「默认值」
获取当前环境配置
当前应用的环境配置是从你的 .env
文件中的 APP_ENV
变量配置的。你可以通过 App
facade 的 environment
函数获取:
use Illuminate\Support\Facades\App;
$environment = App::environment();
你还可以将参数传递给 environment
函数,以确定当前环境是否匹配给定的值。当环境匹配给参数它将返回 true
if (App::environment('local')) {
// 当前环境是 local
}
if (App::environment(['local',