Laravel Laravel
  • 前言

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

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

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

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

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

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

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

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

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

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

配置信息
9.x
9.x 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 9 中文文档 /

未匹配的标注

配置

  • 介绍
  • 环境配置
    • 环境变量类型
    • 检索环境配置
    • 确定当前环境
  • 访问配置值
  • 配置缓存
  • 调试模式
  • 维护模式

介绍

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', 'staging'])) {
    // 当前环境是 local 或 staging ...
}

技巧:通过定义一个服务器级的 APP_ENV 通过定义一个服务器级的。

访问配置值

您可以在应用程序的任何位置使用全局 config 辅助函数轻松访问配置值。 可以使用“点”语法访问配置值,其中包括您希望访问的文件名和选项。 也可以指定默认值,如果配置选项不存在,将返回:

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

// 如果配置值不存在,则检索默认值...
$value = config('app.timezone', 'Asia/Seoul');

要在运行时设置配置值,请将数组传递给 config 助手:

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

配置缓存

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

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

注意:如果您在部署过程中执行 config:cache 命令,则应确保仅从配置文件中调用 env 函数。 一旦配置被缓存,.env 文件将不会被加载; 因此,env 函数只会返回外部的系统级环境变量。

调试模式

config/app.php 配置文件中的 debug 选项决定了实际向用户显示的错误信息量。 默认情况下,此选项设置为尊重 APP_DEBUG 环境变量的值,该变量存储在您的 .env 文件中。

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

维护模式

当您的应用程序处于维护模式时,将为您的应用程序的所有请求显示一个自定义视图。 这使得在更新或执行维护时可以轻松“禁用”您的应用程序。 维护模式检查包含在应用程序的默认中间件堆栈中。 如果应用程序处于维护模式,则会抛出一个 Symfony\Component\HttpKernel\Exception\HttpException 实例,状态码为 503。

要启用维护模式,请执行 down Artisan 命令:

php artisan down

如果您希望 Refresh HTTP 标头与所有维护模式响应一起发送,您可以在调用 down 命令时提供 refresh 选项。 Refresh 标头将指示浏览器在指定秒数后自动刷新页面:

php artisan down --refresh=15

您还可以为 down 命令提供 retry 选项,该选项将设置为 Retry-After HTTP 标头的值,尽管浏览器通常会忽略此标头:

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 发送到您的浏览器后,您将能够正常浏览应用程序,就好像它未处于维护模式一样。

技巧:Your maintenance mode secret should typically consist of alpha-numeric characters and, optionally, dashes. You should avoid using characters that have special meaning in URLs such as ?.

预渲染维护模式视图

如果您在部署期间使用 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。

本文章首发在 网站上。



原文地址:cndocs/9.x/con...

译文地址:cndocs/9.x/con...

上一篇 下一篇

成为Laravel合作伙伴

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

我们的伙伴
Laravel
亮点
  • Our Team
  • Release Notes
  • Getting Started
  • Routing
  • Blade Templates
  • Authentication
  • Authorization
  • Artisan Console
  • Database
  • Eloquent ORM
  • Testing
资源
  • Laracasts
  • Laravel News
  • Laracon
  • Laracon EU
  • Jobs
  • Certification
  • Forums
  • 版本发布时间
  • 包开发
  • 命令行应用
  • TALL stack全栈开发
  • Blade UI Kit
  • 前端资源构建
伙伴
  • Vehikl
  • Tighten Co.
  • Kirschbaum
  • Byte 5
  • 64 Robots
  • Cubet
  • DevSquad
  • Ideil
  • Cyber-Duck
  • ABOUT YOU
  • A2 Design
  • Romega Software
  • Jump24
  • Become A Partner
生态系统
  • Cashier
  • Dusk
  • Echo
  • Envoyer
  • Forge
  • Homestead
  • Horizon
  • Lumen
  • Mix
  • Nova
  • Passport
  • Scout
  • Socialite
  • Spark
  • Telescope
  • Valet
  • Vapor

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

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

  • Twitter
  • GitHub
  • Discord
Laravel PHP中文网 推荐使用阿里云