Laravel - .env vs database.php

时间:2018-03-21 11:36:46

标签: laravel

我对Laravels .env文件VS其他设置感到困惑

我有一个.env文件里面有我的sql数据库设置,但我在config / database.php中也有一个文件,里面有这些设置。

当我将我的应用程序部署到Elastic Beanstalk实例时,它将哪些文件用于数据库设置?

4 个答案:

答案 0 :(得分:5)

.env是环境的缩写,因此这是您的环境配置。

database.php配置包含非关键信息。

您显然不会在源代码管理中拥有数据库的用户名密码,也不会在代码中使用。

为了保证一切安全或保存环境定义的信息......请将它们保存在.env文件中

Laravel将优先考虑.env个变量。

答案 1 :(得分:2)

在“.env”文件中,您有自己的设置。在“.php”文件中,如“database.php”文件,这是属性的默认值,通常,“。env”文件中的相应值在此使用此语法:'database' => env('database', 'default_value'),

答案 2 :(得分:1)

.env文件是它将用于配置的第一个文件。如果.env文件中缺少值,Laravel将检查配置文件。我主要使用它们作为备份。

答案 3 :(得分:0)

更详细的答案:

配置文件是您存储所有配置的位置。您不应在其中添加任何用户名,密码或其他机密信息,因为它们将在您的源代码管理中。

所有秘密信息和所有与环境有关的信息都应存储在您的.env文件中。这样,您就可以在本地/测试/生产中使用不同的.env文件来具有不同的配置值。

如果需要,可以在配置文件中访问.env文件中的信息。

使用another answer

中的内容时
  • 仅在配置文件中使用env()
  • 使用App :: environment()检查环境(.env中的APP_ENV)。
  • 将config('app.var')用于所有其他环境变量,例如。 config('app.debug')
  • 为您自己的ENV变量创建自己的配置文件。示例:
    在您的.env中:

    MY_VALUE = foo

示例配置应用程序/myconfig.php

return [
    'myvalue' => env('MY_VALUE', 'bar'), // 'bar' is default if MY_VALUE is missing in .env
];

访问您的代码:

config('myconfig.myvalue') // will result in 'foo'