从环境中访问配置变量

10 浏览
0 Comments

从环境中访问配置变量

我正在构建一个应用程序,需要在两个git分支上进行工作。对于两个分支,我需要维护两个数据库,并且每次切换到另一个分支时,我都需要手动从.env文件中更改数据库。(env文件包含在.gitignore文件中)

有没有办法从env访问config变量?我尝试了下面的方式:

DB_DATABASE="${config('database.database')}"

但它没有起作用。

注意:我可以通过更改config/database.php来实现,但由于限制的原因,我正在尝试找到另一种方法。

0
0 Comments

问题的原因是应用程序的数据库配置被存储在.env文件中,而不是直接在config/database.php文件中。作者希望通过修改config/database.php文件的方式来设置数据库配置,而不是在.env文件中修改。然而,由于应用程序已经部署到线上环境,所以无法更改database.php文件。

解决方法是通过多个版本的config/database.php文件来解决这个问题。每个版本的文件中包含不同的数据库配置,而不是从.env文件中获取配置。然后,可以将这些文件在GIT中进行版本控制,并根据所在的分支来应用正确的配置。

这种方法的好处是可以根据需要轻松切换不同的数据库配置,而无需修改.env文件或database.php文件。这对于同时开发和维护多个环境(如开发、测试和生产)的应用程序非常有用。

然而,需要注意的是,这种方法需要手动管理不同版本的config/database.php文件,并确保在切换分支时应用正确的配置。这可能会增加维护的复杂性和错误的风险。

总结起来,通过创建多个版本的config/database.php文件,并在GIT中进行版本控制来解决无法从.env文件中获取配置的问题。这种方法可以帮助同时管理多个环境的应用程序,但需要手动管理配置文件的变化。

0
0 Comments

问题原因:无法从环境中访问配置变量。

解决方法:创建分支特定的.env文件,并将其添加到.gitignore中。然后创建一个git post-checkout钩子,将分支特定的.env文件复制到.env文件中。

文章如下:

我已经为你想出了一个解决方案。我在我的环境中尝试过,它可以按照你的期望工作。

除了之前提到的方法外,你还可以创建分支特定的.env文件,例如.env.master和.env.develop,并将它们都添加到.gitignore中。

然后创建一个git post-checkout钩子:

vim .git/hooks/post-checkout

内容如下:

#!/bin/bash

printf '\npost-checkout hook\n\n'

BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)

cp .env.$BRANCH_NAME .env

为文件添加权限:

chmod u+x .git/hooks/post-checkout

现在,当你切换到develop分支时,.env文件的内容将来自.env.develop,master分支也是如此。这是最自动化的方法,除非你想扩展Illuminate\Foundation\Application文件并更改protected $environmentFile = '.env';这样的方式。

0
0 Comments

问题出现的原因是需要在不同的分支中访问配置变量,但是每次切换分支都需要手动更改对应的.env文件的名称。

解决方法是创建多个.env文件,每个文件的名称包含分支的名称,例如.env.production和.env.development。同时,需要将这些文件添加到.gitignore中,以防止被提交到版本控制。在切换分支时,可以手动将对应的.env.文件改回.env的名称。

虽然这个方法不是完美的,但比每次切换分支都编辑文件内容要好。

0