Laravel Laravel
  • 前言

    • 发行说明
    • 升级向导
    • 贡献导引
  • 入门指南

    • 安装
    • 配置
    • 文件夹结构
    • 入门套件
    • 部署
  • 架构思想

    • 请求生命周期
    • 服务容器
    • 服务提供者
    • Facades:门面
  • 基础功能

    • 路由
    • 中间件
    • CSRF 保护
    • 控制器
    • 请求
    • 响应
    • 视图
    • Blade 模板
    • URL 生成
    • Session
    • 表单验证
    • 错误处理
    • 日志
  • 深入话题

    • Artisan 命令行
    • 广播
    • 缓存
    • 集合
    • 编译资源
    • Contracts:契约
    • 事件
    • 文件存储
    • 辅助函数
    • HTTP 客户端
    • 本地化
    • Mail
    • 消息通知
    • 扩展包开发
    • 队列
    • Rate Limiting
    • 任务调度
  • 安全

    • 身份认证
    • 授权
    • 邮件验证
    • 加密
    • 哈希
    • 重置密码
  • 数据库

    • 快速入门
    • 查询构造器
    • 分页
    • 数据库迁移
    • 数据填充
    • Redis
  • Eloquent ORM

    • 快速入门
    • 关联关系
    • Eloquent 集合
    • 修改器
    • API 资源
    • 序列化
  • 测试

    • 快速入门
    • HTTP 测试
    • 命令行测试
    • 浏览器测试
    • 数据库测试
    • 测试模拟器Mocking
  • 官方扩展包

    • Breeze
    • Cashier (Stripe)
    • Cashier (Paddle)
    • Dusk 浏览器测试
    • Envoy 部署工具
    • Fortify 授权生成器
    • Homestead 虚拟机
    • Horizon 队列管理工具
    • Jetstream:全栈开发
    • Octane 加速引擎
    • Passport OAuth 认证
    • Sail 开发环境
    • Sanctum 轻量级 API 认证
    • Scout 全文搜索
    • Socialite 社会化登录
    • Telescope 调试工具
    • Valet 集成环境
  • API Documentation
Icon

提示 您正在浏览旧版本的 Laravel 的文档. 请考虑将你的项目升级到 Laravel 11.x.

93 0

配置信息
8.5
8.5 8.x 7.x 6.x 5.8 5.7 5.6 5.5 5.4 5.3 5.2 5.1

Laravel 8 中文文档 /

未匹配的标注

配置

  • 介绍
  • 环境配置
    • 环境变量类型
    • 获取环境变量配置值
    • 判断当前应用环境
  • 访问配置值
  • 缓存配置
  • 调试模式
  • 维护模式

介绍

Laravel 框架的所有配置文件都存放在 config 目录下,每个配置项都有文档,你可以整体阅读下所有这些配置文件来熟悉配置项的作用和位置。

这些配置文件允许你配置数据连接信息、邮箱服务器信息、以及很多其他核心配置信息,比如应用时区、加密密钥等。

环境配置

基于应用运行的环境不同设置不同的配置值能够给我们开发带来极大的方便,比如,我们通常在本地和线上环境配置不同的缓存驱动,这一功能在 Laravel 中很容易实现。

Laravel 使用 PHP 扩展库 DotEnv 来实现这一功能,在新安装的 Laravel 中,根目录下有一个 .env.example 文件,如果 Laravel 是通过 Composer安装的,那么该文件已经被重命名为 .env,否则的话你要自己手动重命名该文件。

Laravel的默认.env文件包含一些常用的配置值,这些配置值可能会根据您的应用程序是在本地运行还是在生产Web服务器上运行而有所不同。 在 Laravel的config目录下,各种配置使用env函数检索.env文件的这些配置值。

如果是团队开发,你可能希望应用程序中包含 .env.example 文件。因为通过在 .env.example 文件中放置占位值,团队中的其他开发人员可以清楚地看到运行应用程序需要哪些环境变量。

技巧:.env 文件中的所有变量都可被外部环境变量(比如服务器级或系统级环境变量)所覆盖。

env文件的安全

你的 env 文件不应该提交到版本管理器中,首先,使用应用程序的每个开发人员/服务器可能需要不同的环境配置。其次,如果入侵者获得了对版本管理器的访问权限,这将成为一个安全风险,他将能看到配置文件中的敏感数据。

环境变量类型

.env 文件中的所有变量都被解析为字符串,因此创建了一些保留值以允许你从 env() 函数中返回更多类型的变量:

.env 值 env() 值
true (bool) true
(true) (bool) true
false (bool) false
(false) (bool) false
empty (string) ‘’
(empty) (string) ‘’
null (null) null
(null) (null) null

如果你需要使用包含空格的值定义环境变量,可以通过将值括在双引号中来实现。

APP_NAME="我的 应用"

获取环境配置

当应用程序收到请求时,.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', 'staging'])) {
    // 当前环境是 local 或 staging ...
}

技巧:通过定义一个服务器级的 APP_ENV 环境变量,可以覆盖当前的应用程序环境。

访问配置值

你可以轻松地在应用程序的任何位置使用全局 config 函数来访问配置值。配置值的访问可以使用「点」语法,这其中包含了要访问的文件和选项的名称。还可以指定默认值,如果配置选项不存在,则返回默认值。

$value = config('app.timezone');

// 如果配置值不存在,返回一个默认值
$value = config('app.timezone', 'Asia/Seoul');

若要应用在运行时修改配置,请使用config函数的数组形式 :

config(['app.timezone' => 'America/Chicago']);

配置缓存

为提高应用程序的速度,您应该使用 config:cache 命令。 这将把应用程序的所有配置信息组合到一个可以由框架快速加载的缓存文件中。

你通常应该运行 php artisan config:cache 命令作为生产部署过程的一部分。因为在应用程序的开发过程中经常需要更改配置选项,所以你不该在本地开发期间中运行该命令。

注意:如果在部署过程中执行 config:cache 命令,那么你应该确保只从配置文件内部调用 env 函数。一旦配置被缓存,.env 文件将不再被加载,所有对 env 函数的调用都将返回 null

调试模式

通过在 config/app.php 文件中配置 debug 属性可以将应用的错误信息展示给用户. 一般情况下在你可以在 .env 文件中的 APP_DEBUG 变量来配置它

在本地开发环境中,您应该将 APP_DEBUG 变量设置为 true。 在你的生产环境中应设置为 false。 如果你在生产环境中设置为 true 您可能会将敏感的配置值暴露给应用程序的最终用户

维护模式

当你的应用处于维护模式, 它将应用程序的所有请求渲染为一个自定义视图。 当您的应用程序正在更新或执行维护时,你可以方便的「停止」系统的运行。 维护模式检查包含在应用程序的默认中间件堆栈中。 如果应用程序处在维护模式,应用将抛出 MaintenanceModeException 异常并返回状态码 503。

要启用维护模式,只需执行下面的 Artisan 的 down 命令:

php artisan down

你还可以向 down 命令提供 retry 选项。该选项 retry 值可用于设置 HTTP 请求头中 Retry-After 的值:

php artisan down --retry=60

绕过维护模式

即使在维护模式下,你也可以使用 secret 选项指定维护模式的绕过令牌:

php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"

将应用程序置于维护模式后,您可以访问与该令牌匹配的应用程序 URL,Laravel 将为您的浏览器颁发一个维护模式绕过 cookie:

https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515

当访问这个隐藏的路由时,您将被重定向到应用程序的 / 路由。一旦 cookie 被颁发到您的浏览器,您将能够正常浏览应用程序,就好像它没有处于维护模式一样。

预渲染维护模式视图

如果在部署环境中使用 php artisan down 命令,当你的 Composer 依赖或其基础组件更新的时候,你的用户也可能遇到偶然性的错误。这是因为 Laravel 框架的重要部分必须启动才能确定应用程序处于维护模式,并使用模板引擎呈现维护模式视图。

因此,Laravel 允许您预渲染一个维护模式视图,该视图将在请求周期的最开始返回。此视图在加载应用程序的任何依赖项之前呈现。可以使用 down 命令的 render 选项预渲染所选模板:

php artisan down --render="errors::503"

重定向维护模式请求

在维护模式下,Laravel 将显示用户试图访问的所有应用程序 url 的维护模式视图。如果你愿意,你可以指示 Laravel 重定向所有请求到一个特定的 URL。这可以使用 redirect 选项来实现。例如,你可能希望将所有请求重定向到 / URI:

php artisan down --redirect=/

禁用维护模式

要禁用维护模式,请使用 up 命令:

php artisan up

技巧:你可以通过在 resources/views/errors/503.blade.php 中定义自己的模板来自定义默认的维护模式模板。

维护模式 & 队列

当应用程序处于维护模式时,将不会处理任何 队列任务。一旦应用程序退出维护模式,这些任务将继续处理。

维护模式的替代方法

由于维护模式要求你的应用程序有几秒钟的停机时间,因此你可以考虑使用 Laravel Vapor 和 Envoyer 等替代方案来实现Laravel 零停机部署。

本文章首发在 网站上。


上一篇 下一篇

成为Laravel合作伙伴

Laravel Partners是提供一流Laravel开发和咨询服务的精英商店。我们每个合作伙伴都可以帮助您制定一个精美,结构完善的项目.

我们的伙伴
Laravel
亮点
  • Our Team
  • 发布说明
  • 入门
  • 路由
  • Blade 模板
  • 身份验证
  • 用户授权
  • Artisan 控制台
  • 数据库
  • Eloquent ORM
  • 测试
资源
  • Laravel Bootcamp
  • Laracasts
  • Laravel News
  • Laracon
  • Laracon EU
  • Laracon India
  • Jobs
  • Forums
  • Trademark
  • 版本发布时间
  • 包开发
  • 命令行应用
  • TALL stack全栈开发
  • Blade UI Kit
  • 前端资源构建
伙伴
  • WebReinvent
  • Vehikl
  • Tighten
  • 64 Robots
  • Active Logic
  • Byte 5
  • Curotec
  • Cyber-Duck
  • DevSquad
  • Jump24
  • Kirschbaum
生态系统
  • Cashier
  • Dusk
  • Echo
  • Envoyer
  • Forge
  • Horizon
  • Nova
  • Octane
  • Sail
  • Sanctum
  • Scout
  • Spark
  • Telescope
  • Valet
  • Vapor

Laravel是一个具有表达力,优雅语法的Web应用程序框架。我们认为,发展必须是一种令人愉悦的创造力,才能真正实现。Laravel试图通过减轻大多数Web项目中使用的常见任务来减轻开发的痛苦.

Laravel是Taylor Otwell的商标.
Copyright © 2011-2025 Laravel中文网 LLC.

  • Twitter
  • GitHub
  • Discord
Laravel 全栈开发网 推荐使用阿里云 按Ctrl+D试试