从环境中访问配置变量
问题的原因是应用程序的数据库配置被存储在.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文件中获取配置的问题。这种方法可以帮助同时管理多个环境的应用程序,但需要手动管理配置文件的变化。
问题原因:无法从环境中访问配置变量。
解决方法:创建分支特定的.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';这样的方式。