Laravel配置

2024-09-20 30

Laravel 框架中,所有配置文件都存储在 “config” 目录中。每个配置选项都有详细的文档说明,因此可以随时浏览这些文件,以熟悉可用的配置选项。这些配置文件允许定义核心配置值,如数据库连接信息、邮件服务器信息、应用时区和加密密钥等。

一、使用About命令

Laravel 提供了一个 “about” Artisan 命令,可以快速显示应用配置、驱动程序和环境的概况:

php artisan about

如果只对输出的特定部分感兴趣,可以使用 “–only” 选项来过滤该部分。例如,若只想查看环境信息:

php artisan about --only=environment

此外若要详细探索特定配置文件的值,可以使用 “config:show” Artisan 命令:

php artisan config:show database

二、Laravel环境配置

根据应用程序运行的环境,使用不同的配置值通常非常有用。例如,在本地和生产服务器上,可能希望使用不同的缓存驱动程序。为此,Laravel 采用了 DotEnv PHP 库进行环境管理。在新安装的 Laravel 应用中,会发现根目录包含一个 ” .env.example” 文件,该文件定义了一些常见的环境变量。在安装过程中,此文件会自动复制为 “.env”。

Laravel 的默认 “.env” 文件包含了一些常见的配置值,这些值会根据应用程序是运行在本地环境还是生产 Web 服务器上而发生变化。这些配置值由 “config” 目录中的配置文件利用 Laravel 的 “env” 函数读取。

如果与团队协同开发,建议继续更新 “.env.example” 文件。通过在示例配置文件中使用占位符值,团队成员可以清楚地了解运行应用程序所需的环境变量。

注意: “.env” 文件中的变量可以被外部环境变量(如服务器级或系统级环境变量)覆盖。

1、环境文件的安全

在开发过程中, “.env” 文件不应提交到源代码控制中,因为每个开发者或服务器可能需要不同的环境配置。如果攻击者有机会访问源代码库,敏感凭据可能会被泄露,造成安全风险。不过,Laravel 允许加密环境文件,以便可以安全地将其添加到源代码控制中。

2、额外的环境文件

在加载应用程序的环境变量之前,Laravel 会检查当前是否已经设置了 “APP_ENV” 环境变量,或者是否在命令行中指定了 “–env” 参数。如果存在,Laravel 会尝试加载对应的 “.env.[APP_ENV]” 文件;如果不存在,则加载默认的 “.env” 文件。

3、环境变量类型

在 “.env” 文件中的所有变量通常会被解析为字符串。为了解决这个问题,Laravel 中定义了一些保留值,以便 “env()” 函数可以返回更广泛的类型范围:

Laravel配置

如果需要定义一个包含空格的环境变量值,可以使用双引号括起来:

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')) {
// 环境是本地
}
if (App::environment(['local', 'staging'])) {
// 环境是本地或 staging
}

通过以上概述,将能够掌握 Laravel 应用程序的配置与环境管理方式,从而更好地适应不同的开发场景。

五、Laravel环境文件加密与配置管理

未加密的环境文件不应存储在源代码控制中,因为它们可能包含敏感信息。Laravel 提供了加密功能,使可以安全地存储环境文件并将其添加到源代码控制中。

1、环境文件的加密

要加密环境文件,请使用 “env:encrypt” Artisan 命令:

php artisan env:encrypt

执行该命令后,Laravel 将加密 “.env” 文件,并将加密后的内容保存在 “.env.encrypted” 文件中。加密密钥会在命令输出中显示,务必将其存储在安全的密码管理器中。如果希望使用自定义加密密钥,可以在命令中通过 “–key” 选项提供:

php artisan env:encrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF

如果应用程序有多个环境文件(例如 “.env” 和 “.env.staging”),可以使用 “–env” 选项指定要加密的环境文件:

php artisan env:encrypt --env=staging

2、环境文件的解密

要解密环境文件,请使用 “env:decrypt” Artisan 命令。此命令需要提供解密密钥,Laravel 默认从环境变量 “LARAVEL_ENV_ENCRYPTION_KEY” 中获取此密钥:

php artisan env:decrypt

或者也可以通过 “–key” 选项直接提供解密密钥:

php artisan env:decrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF

调用 “env:decrypt” 命令后,Laravel 将解密 “.env.encrypted” 文件,并将解密后的内容写入 “.env” 文件中。

同时该命令还支持自定义加密算法,通过 “–cipher” 选项指定:

php artisan env:decrypt --key=qUWuNRdfuImXcKxZ --cipher=AES-128-CBC

如果应用程序有多个环境文件,可以通过 “–env” 选项指定特定的环境文件:

php artisan env:decrypt --env=staging

为了覆盖现有的环境文件,可以在命令中添加 “–force” 选项:

php artisan env:decrypt --force

六、访问配置值

在 Laravel 中,可以通过 “Config” facade 或全局的 “config” 函数轻松访问配置值。采用“点”语法可访问配置项,指定文件名及所需选项的名称,还可以提供默认值:

use Illuminate\Support\Facades\Config;
$value = Config::get('app.timezone');
$value = config('app.timezone');
// 如果配置值不存在,检索默认值
$value = config('app.timezone', 'Asia/Seoul');

要在运行时修改配置值,可以调用 “Config” facade 的 “set” 方法,或传递数组给 “config” 函数:

Config::set('app.timezone', 'America/Chicago');
config(['app.timezone' => 'America/Chicago']);

为了支持静态分析,”Config” facade 还提供了类型转换的配置检索方法。当检索到的配置值类型不匹配时,将抛出异常:

Config::string('config-key');
Config::integer('config-key');
Config::float('config-key');
Config::boolean('config-key');
Config::array('config-key');

七、配置缓存

为了提高应用程序性能,建议使用 “config:cache” Artisan 命令将所有配置文件缓存到一个文件中,这样框架可以快速加载配置。

php artisan config:cache

应该将此命令作为生产部署过程的一部分,但在本地开发期间不应执行,因为开发过程中配置选项可能会频繁改变。

一旦配置被缓存,应用程序的 “.env” 文件在请求或 Artisan 命令期间将不会被加载,因此 “env” 函数将只返回外部的系统级环境变量。确保仅从应用程序的配置文件中调用 “env” 函数,以避免不必要的错误。

要清除缓存的配置,可以使用以下命令:

php artisan config:clear

八、配置发布

Laravel 的大多数配置文件已经发布在您的应用程序的 config 目录中;然而,某些配置文件如 cors.php 和 view.php 默认不会被发布,因为大多数应用程序永远不需要修改它们。

可以使用 config:publish Artisan 命令来发布默认未发布的任何配置文件:

php artisan config:publish
php artisan config:publish --all
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Laravel
下一篇: Laravel模式