配置
介绍
Laravel 框架的所有配置文件都存储在 config
目录中。每个选项都有文档说明,因此请随意浏览这些文件并熟悉可用的选项。
环境配置
根据应用程序运行的环境使用不同的配置值通常是有帮助的。例如,您可能希望在本地使用不同的缓存驱动,而不是在生产服务器上使用的缓存驱动。
为此,Laravel 使用了 Vance Lucas 的 DotEnv PHP 库。在全新的 Laravel 安装中,应用程序的根目录将包含一个 .env.example
文件。如果您通过 Composer 安装 Laravel,该文件将自动重命名为 .env
。否则,您应手动重命名该文件。
您的 .env
文件不应提交到应用程序的源代码控制中,因为每个使用您应用程序的开发人员/服务器可能需要不同的环境配置。此外,这在入侵者访问您的源代码库时会成为安全风险,因为任何敏感凭据都会被暴露。
如果您与团队一起开发,您可能希望继续在应用程序中包含一个 .env.example
文件。通过在示例配置文件中放置占位符值,您团队中的其他开发人员可以清楚地看到运行应用程序所需的环境变量。您还可以创建一个 .env.testing
文件。在运行 PHPUnit 测试或使用 --env=testing
选项执行 Artisan 命令时,该文件将覆盖 .env
文件。
您的 .env
文件中的任何变量都可以被外部环境变量(如服务器级或系统级环境变量)覆盖。
检索环境配置
当您的应用程序接收到请求时,此文件中列出的所有变量将被加载到 $_ENV
PHP 超级全局变量中。但是,您可以使用 env
助手在配置文件中检索这些变量的值。实际上,如果您查看 Laravel 配置文件,您会注意到几个选项已经在使用此助手:
'debug' => env('APP_DEBUG', false),
传递给 env
函数的第二个值是“默认值”。如果给定键没有环境变量存在,则将使用此值。
确定当前环境
当前应用程序环境是通过 .env
文件中的 APP_ENV
变量确定的。您可以通过 App
facade 上的 environment
方法访问此值:
$environment = App::environment();
您还可以向 environment
方法传递参数以检查环境是否与给定值匹配。如果环境与任何给定值匹配,该方法将返回 true
:
if (App::environment('local')) {
// 环境是本地的
}
if (App::environment(['local', 'staging'])) {
// 环境是本地或暂存...
}
当前应用程序环境检测可以通过服务器级 APP_ENV
环境变量覆盖。当您需要为不同的环境配置共享相同的应用程序时,这可能很有用,因此您可以在服务器的配置中设置给定主机以匹配给定环境。
访问配置值
您可以从应用程序的任何地方使用全局 config
助手函数轻松访问配置值。可以使用“点”语法访问配置值,其中包括您希望访问的文件和选项的名称。还可以指定默认值,如果配置选项不存在,将返回该值:
$value = config('app.timezone');
要在运行时设置配置值,请将数组传递给 config
助手:
config(['app.timezone' => 'America/Chicago']);
配置缓存
为了提高应用程序的速度,您应该使用 config:cache
Artisan 命令将所有配置文件缓存到一个文件中。这将把应用程序的所有配置选项组合到一个文件中,框架将快速加载该文件。
您通常应该在生产部署过程中运行 php artisan config:cache
命令。该命令不应在本地开发期间运行,因为在应用程序开发过程中配置选项将频繁更改。
如果您在部署过程中执行 config:cache
命令,您应该确保仅在配置文件中调用 env
函数。一旦配置被缓存,.env
文件将不会被加载,所有对 env
函数的调用将返回 null
。
维护模式
当您的应用程序处于维护模式时,将为所有请求显示自定义视图。这使得在更新或执行维护时“禁用”应用程序变得容易。维护模式检查包含在应用程序的默认中间件堆栈中。如果应用程序处于维护模式,将抛出一个 MaintenanceModeException
,状态码为 503。
要启用维护模式,请执行 down
Artisan 命令:
php artisan down
您还可以为 down
命令提供 message
和 retry
选项。message
值可用于显示或记录自定义消息,而 retry
值将被设置为 Retry-After
HTTP 头的值:
php artisan down --message="Upgrading Database" --retry=60
要禁用维护模式,请使用 up
命令:
php artisan up
您可以通过在 resources/views/errors/503.blade.php
中定义自己的模板来自定义默认的维护模式模板。
维护模式与队列
当您的应用程序处于维护模式时,不会处理任何队列作业。一旦应用程序退出维护模式,作业将继续正常处理。
维护模式的替代方案
由于维护模式需要您的应用程序有几秒钟的停机时间,请考虑使用 Envoyer 等替代方案来实现 Laravel 的零停机时间部署。