配置
介绍
Laravel 框架的所有配置文件都存储在
config
目录。每个选项都有文档记录,因此请随意浏览文件并熟悉可用的选项。
这些配置文件允许您配置数据库连接信息、邮件服务器信息以及其他各种核心配置值(例如应用程序 URL 和加密密钥)。
这
about
命令
Laravel 可以通过以下方式显示应用程序配置、驱动程序和环境的概述:
about
工匠指挥。
1
php
工匠
关于
如果你只对应用程序概述输出的特定部分感兴趣,你可以使用
--only
选项:
1
php
工匠
关于
--only=环境
或者,要详细探索特定配置文件的值,您可以使用
config:show
Artisan 命令:
1
php
工匠
配置:显示
数据库
环境配置
根据应用程序运行的环境使用不同的配置值通常会很有帮助。例如,您可能希望在本地使用与生产服务器不同的缓存驱动程序。
为了使这变得简单,Laravel 利用
点环境
PHP 库。在全新安装的 Laravel 中,应用程序的根目录将包含一个
.env.example
定义许多常见环境变量的文件。在 Laravel 安装过程中,此文件将自动复制到
.env
。
Laravel 的默认
.env
文件包含一些常见的配置值,这些值可能因应用程序是在本地运行还是在生产 Web 服务器上运行而有所不同。然后,这些值由
config
使用 Laravel 的目录
env
功能。
如果你正在与团队一起开发,你可能希望继续包括和更新
.env.example
文件与您的应用程序一起运行。通过在示例配置文件中放置占位符值,团队中的其他开发人员可以清楚地看到运行应用程序所需的环境变量。
您的任何变量
.env
文件可以被外部环境变量(例如服务器级或系统级环境变量)覆盖。
环境文件安全
你的
.env
文件不应提交到应用程序的源代码控制中,因为使用应用程序的每个开发人员/服务器可能需要不同的环境配置。此外,如果入侵者获得源代码控制存储库的访问权限,这将带来安全风险,因为任何敏感凭据都会暴露。
但是,可以使用 Laravel 的内置加密来加密你的环境文件 环境加密 . 加密的环境文件可以安全地放置在源代码控制中。
附加环境文件
在加载应用程序的环境变量之前,Laravel 会确定
APP_ENV
环境变量已从外部提供,或者
--env
已指定 CLI 参数。如果是这样,Laravel 将尝试加载
.env.[APP_ENV]
文件是否存在。如果不存在,则默认
.env
文件将被加载。
环境变量类型
你的所有变量
.env
文件通常被解析为字符串,因此创建了一些保留值,以允许您从中返回更广泛的类型
env()
功能:
.env
价值 |
env()
价值 |
---|---|
真的 | (布尔值)真 |
(真的) | (布尔值)真 |
错误的 | (布尔值)false |
(错误的) | (布尔值)false |
空的 | (细绳) '' |
(空的) | (细绳) '' |
无效的 | (空) 空 |
(无效的) | (空) 空 |
如果您需要定义一个包含空格的值的环境变量,则可以通过将值括在双引号中来实现:
1
应用程序名称
=
“
我的申请
“
检索环境配置
所有变量均列在
.env
文件将加载到
$_ENV
当您的应用程序收到请求时,PHP 超全局。但是,您可以使用
env
函数用于从配置文件中的这些变量中检索值。事实上,如果你查看 Laravel 配置文件,你会注意到许多选项已经在使用这个函数:
1
‘
调试
‘
=>
环境
(
‘
APP_DEBUG
‘
,
错误的
),
传递给
env
function 是“默认值”。如果给定键不存在环境变量,则返回此值。
确定当前环境
当前应用环境通过
APP_ENV
变量来自你的
.env
文件。您可以通过
environment
方法上的
App
正面
:
1
使用
照亮\支撑\外墙\
应用程序
;23
$环境
=
应用程序
::
环境
();
您还可以将参数传递给
environment
方法来确定环境是否与给定值匹配。该方法将返回
true
如果环境与任何给定的值匹配:
1
如果
(
应用程序
::
环境
(
‘
当地的
‘
)){2
//
环境是本地的3
}45
如果
(
应用程序
::
环境
([
‘
当地的
‘
,
‘
分期
‘
])){6
//
环境要么是本地的,要么是暂存的......7
}
可以通过定义服务器级的
APP_ENV
环境变量。
加密环境文件
未加密的环境文件绝不应存储在源代码控制中。但是,Laravel 允许您加密环境文件,以便可以安全地将它们与应用程序的其余部分一起添加到源代码控制中。
加密
要加密环境文件,您可以使用
env:encrypt
命令:
1
php
工匠
环境:加密
运行
env:encrypt
命令将加密你的
.env
文件并将加密内容放在
.env.encrypted
文件。解密密钥显示在命令的输出中,应存储在安全的密码管理器中。如果您想提供自己的加密密钥,可以使用
--key
调用命令时的选项:
1
php
工匠
环境:加密
--key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF
提供的密钥长度应与所用加密密码所需的密钥长度相匹配。默认情况下,Laravel 将使用
AES-256-CBC
密码需要 32 个字符的密钥。您可以自由使用 Laravel 支持的任意密码
加密器
通过
--cipher
调用命令时的选项。
如果你的应用程序有多个环境文件,例如
.env
和
.env.staging
,您可以通过提供环境名称来指定应加密的环境文件
--env
选项:
1
php
工匠
环境:加密
--env=暂存
解密
要解密环境文件,您可以使用
env:decrypt
命令。此命令需要解密密钥,Laravel 将从
LARAVEL_ENV_ENCRYPTION_KEY
环境变量:
1
php
工匠
环境:解密
或者,可以通过以下方式直接向命令提供密钥:
--key
选项:
1
php
工匠
环境:解密
--key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF
当
env:decrypt
命令被调用时,Laravel 将解密
.env.encrypted
文件并将解密的内容放在
.env
文件。
这
--cipher
可以向
env:decrypt
命令以使用自定义加密密码:
1
php
工匠
环境:解密
--key=qUWuNRdfuImXcKxZ
--密码=AES-128-CBC
如果你的应用程序有多个环境文件,例如
.env
和
.env.staging
,您可以通过提供环境名称来指定应该解密的环境文件
--env
选项:
1
php
工匠
环境:解密
--env=暂存
为了覆盖现有的环境文件,您可以提供
--force
的选项
env:decrypt
命令:
1
php
工匠
环境:解密
- 力量
访问配置值
您可以使用以下方式轻松访问您的配置值
Config
外观或全局
config
函数可从应用程序的任何地方调用。可以使用“点”语法访问配置值,其中包括文件的名称和要访问的选项。还可以指定默认值,如果配置选项不存在,则返回默认值:
1
使用
照亮\支撑\外墙\
配置
;23
$值
=
配置
::
得到
(
‘
应用程序时区
‘
(英文):45
$值
=
配置
(
‘
应用程序时区
‘
(英文):67
//
如果配置值不存在,则检索默认值...8
$值
=
配置
(
‘
应用程序时区
‘
,
‘
亚洲/首尔
‘
(英文):
要在运行时设置配置值,您可以调用
Config
立面的
set
方法或将数组传递给
config
功能:
1
配置
::
放
(
‘
应用程序时区
‘
,
‘
美国/芝加哥
‘
(英文):23
配置
([
‘
应用程序时区
‘
=>
‘
美国/芝加哥
‘
]);
为了协助静态分析,
Config
Facade 还提供了类型化的配置检索方法。如果检索到的配置值与预期的类型不匹配,则会抛出异常:
1
配置
::
细绳
(
‘
配置键
‘
(英文):2
配置
::
整数
(
‘
配置键
‘
(英文):3
配置
::
漂浮
(
‘
配置键
‘
(英文):4
配置
::
布尔值
(
‘
配置键
‘
(英文):5
配置
::
大批
(
‘
配置键
‘
(英文):
配置缓存
为了提高应用程序的速度,你应该使用
config:cache
Artisan 命令。这会将应用程序的所有配置选项组合成一个文件,以便框架快速加载。
您通常应该运行
php artisan config:cache
命令作为生产部署过程的一部分。不应在本地开发期间运行该命令,因为在应用程序开发过程中经常需要更改配置选项。
一旦配置被缓存,你的应用程序的
.env
在请求或 Artisan 命令期间,框架不会加载该文件;因此,
env
函数将只返回外部的、系统级的环境变量。
因此,你应该确保只调用
env
在应用程序的配置中运行(
config
) 文件。通过检查 Laravel 的默认配置文件,您可以看到许多此类示例。可以使用
config
功能
如上所述
。
这
config:clear
命令可用于清除缓存的配置:
1
php
工匠
配置:清除
如果你执行
config:cache
在部署过程中,你应该确保只调用
env
配置文件中的功能。配置缓存后,
.env
文件将不会被加载;因此,
env
函数将只返回外部的、系统级的环境变量。
配置发布
Laravel 的大部分配置文件已发布在你的应用程序的
config
目录;但是某些配置文件,例如
cors.php
和
view.php
默认情况下不会发布,因为大多数应用程序永远不需要修改它们。
不过,您可以使用
config:publish
Artisan 命令发布任何默认未发布的配置文件:
1
php
工匠
配置:发布23
php
工匠
配置:发布
- 全部
调试模式
这
debug
选项
config/app.php
配置文件决定了实际向用户显示多少有关错误的信息。默认情况下,此选项设置为尊重
APP_DEBUG
环境变量,存储在您的
.env
文件。
对于本地开发,您应该设置
APP_DEBUG
环境变量
true
。
在您的生产环境中,此值应始终为
false
. 如果变量设置为
true
在生产中,您可能会面临向应用程序的最终用户暴露敏感配置值的风险。
维护模式
当您的应用程序处于维护模式时,将针对应用程序的所有请求显示自定义视图。这样,在应用程序更新或执行维护时,可以轻松“禁用”应用程序。维护模式检查包含在应用程序的默认中间件堆栈中。如果应用程序处于维护模式,则
Symfony\Component\HttpKernel\Exception\HttpException
实例将抛出状态代码 503。
要启用维护模式,请执行
down
Artisan 命令:
1
php
工匠
向下
如果你想要
Refresh
与所有维护模式响应一起发送的 HTTP 标头,您可以提供
refresh
调用时选项
down
命令。
Refresh
标头将指示浏览器在指定的秒数后自动刷新页面:
1
php
工匠
向下
--刷新=15
您还可以提供
retry
的选项
down
命令,它将被设置为
Retry-After
HTTP 标头的值,尽管浏览器通常会忽略此标头:
1
php
工匠
向下
--重试=60
绕过维护模式
要使用秘密令牌绕过维护模式,您可以使用
secret
指定维护模式绕过令牌的选项:
1
php
工匠
向下
--秘密=
“
1630542a-246b-4b66-afa1-dd72a4c43515
“
将应用程序置于维护模式后,你可以导航到与此令牌匹配的应用程序 URL,Laravel 将向你的浏览器发出维护模式绕过 cookie:
1
https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515
如果你希望 Laravel 为你生成秘密令牌,你可以使用
with-secret
选项。一旦应用程序处于维护模式,秘密将显示给您:
1
php
工匠
向下
--with-secret
当访问此隐藏路线时,您将被重定向到
/
应用程序的路由。一旦将 cookie 发送到您的浏览器,您将能够正常浏览应用程序,就像它未处于维护模式一样。
维护模式密钥通常应由字母数字字符和(可选)破折号组成。您应避免在 URL 中使用具有特殊含义的字符,例如
?
或者
&
。
多台服务器上的维护模式
默认情况下,Laravel 使用基于文件的系统来确定您的应用程序是否处于维护模式。这意味着要激活维护模式,
php artisan down
必须在托管应用程序的每台服务器上执行命令。
另外,Laravel 提供了一种基于缓存的方法来处理维护模式。此方法需要运行
php artisan down
命令。要使用此方法,请修改应用程序的维护模式变量
.env
文件。您应该选择一个缓存
store
所有服务器均可访问。这可确保维护模式状态在每台服务器上保持一致:
1
APP_MAINTENANCE_DRIVER
=缓存2
应用程序维护商店
=数据库
预渲染维护模式视图
如果你利用
php artisan down
命令,如果您的用户在 Composer 依赖项或其他基础架构组件更新时访问应用程序,他们仍可能偶尔遇到错误。发生这种情况的原因是 Laravel 框架的很大一部分必须启动才能确定您的应用程序处于维护模式并使用模板引擎呈现维护模式视图。
因此,Laravel 允许您预渲染维护模式视图,该视图将在请求周期一开始就返回。此视图在应用程序的任何依赖项加载之前呈现。您可以使用
down
命令的
render
选项:
1
php
工匠
向下
--渲染=
“
错误::503
“
重定向维护模式请求
在维护模式下,Laravel 将显示用户尝试访问的所有应用程序 URL 的维护模式视图。如果您愿意,可以指示 Laravel 将所有请求重定向到特定 URL。这可以使用
redirect
选项。例如,您可能希望将所有请求重定向到
/
类型:
1
php
工匠
向下
--重定向=/
禁用维护模式
要禁用维护模式,请使用
up
命令:
1
php
工匠
向上
您可以通过在以下位置定义自己的模板来自定义默认维护模式模板:
resources/views/errors/503.blade.php
。
维护模式和队列
当您的应用程序处于维护模式时, 排队作业 将被处理。一旦应用程序退出维护模式,作业将继续照常处理。
维护模式的替代方案
由于维护模式要求你的应用程序停机几秒钟,因此请考虑以下替代方案 Laravel Vapor 和 发送 使用 Laravel 实现零停机部署。