如何根据 Laravel 5.3 App> 中的 app_env 设置加载不同的 mail_driver 配置设置

How to load different mail_driver config setting based on app_env setting in Laravel 5.3 App>

在我的 PHP Laravel 5.3 应用程序中,我的 .env 文件中有我的配置设置 APP_ENV=local 当我的应用程序处于 production/live 模式时可以更改为 APP_ENV=production

在那个 .env 文件中,我还有一个 MAIL_DRIVER=preview 设置,它被拉入我的 config/mail.php 配置文件 env('MAIL_DRIVER', 'smtp'),如下所示:

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
]

所以现在我的问题是,当我将 .env 设置 APP_ENV=local 更改为 APP_ENV=production

如何让它根据 env('APP_ENV') 设置加载不同的 env('MAIL_DRIVER') 设置?

有没有办法为每个环境或不同的配置文件加载不同的 .env 文件,或者你如何在 Laravel 5.3.

中处理这个问题

我记得在旧版本的 Laravel 中,您只是在配置文件夹中为每个环境创建了一个新文件夹,但整个配置系统与那些旧版本不同。

使用 Laravel 5,您在每个环境中都有不同的 .env 文件副本。

此文件未提交到您的存储库中。相反,您的 .env.example 文件是,这就是您在环境中复制并命名为 .env 的文件。

在以前的 Laravel 版本中(即 <= 4),您可以在同一个签出的项目副本中拥有单独的环境文件并在环境之间切换,但这实际上没有多大意义。

使您的 .env.example 文件与您的应用程序中需要的所有选项保持最新,并将它们初始化为空值。当您部署到新环境时,您将其复制为一个新文件,这可以防止您意外地将凭据提交到您的存储库并使事情变得简单:

cp .env.example .env

然后编辑文件并设置适合该特定环境的值。例如,您可以将生产密钥用于某些服务,而不是使用测试 API 密钥。编辑,例如:

sudo vim .env # If you like VIM

sudo nano .env # If you like NANO

我刚才所说的一个例外是测试。 Per the documentation:

You may also create a .env.testing file. This file will override values from the .env file when running PHPUnit tests or executing Artisan commands with the --env=testing option.

不过,在这种情况下,如果您的 .env.testing 文件不包含任何敏感的生产值,那么在您的回购协议中很可能是可以接受的,无论如何它可能都不应该。