加密env文件

php artisan env:encrypt

//用自己的加密方式指定秘钥
php artisan env:encrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF

//加密.env.staging文件
php artisan env:encrypt --env=staging

//  --cipher可以指定加密算法
会返回如下格式,其中key是解密时需要的

Key .................................................... base64:bgl1MoSbjfsJ8VYQJYAZznrq6DUwkA8LeFW/8UH8frk=
Cipher ......................................................................................... AES-256-CBC

解密env文件

php artisan env:decrypt --key=base64:bgl1MoSbjfsJ8VYQJYAZznrq6DUwkA8LeFW/8UH8frk=

//解密.env.staging文件
php artisan env:decrypt --env=staging

//解密并覆盖现有的env文件(key可以存.env文件中LARAVEL_ENV_ENCRYPTION_KEY的变量中以备解密使用,执行下面命令后LARAVEL_ENV_ENCRYPTION_KEY会被覆盖掉)
php artisan env:decrypt --force
当执行 env:decrypt 命令时,Laravel 将解密 .env.encrypted 文件的内容,并将解密后的内容放置在 .env 文件中。

Laravel访问配置值

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

// 如果配置值不存在,则返回默认值...
$value = config('app.timezone', 'Asia/Seoul');
//要在运行时设置配置值,请将数组传递给 config 函数:
config(['app.timezone' => 'America/Chicago']);

Laravel配置缓存

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

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

一旦配置被缓存,应用程序的。.env 文件将不会在请求或 Artisan 命令期间被框架加载;因此, env 函数将只返回外部的系统级环境变量。

因此,应确保仅从应用程序的配置 config 文件中调用 env 函数。通过检查 Laravel 的默认配置文件,你可以看到许多示例。可以使用 config 函数从应用程序中的任何位置访问配置值

调试模式

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

对于本地开发,你应该将 APP_DEBUG 环境变量设置为 true。 I 在你的生产环境中,此值应始终为 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 被颁发到你的浏览器,你就可以像维护模式不存在一样正常浏览应用程序。

技巧

你的维护模式 secret 通常应由字母数字字符和可选的破折号组成。应避免使用 URL 中具有特殊含义的字符,例如?

预渲染维护模式视图

如果在部署期间中使用 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 零停机部署。