为什么CakePHP默认将app/Config放在.gitignore中?

frebpwbc  于 2023-09-29  发布在  Git
关注(0)|答案(3)|浏览(89)

为什么CakePHP默认将app/Config放在.gitignore中?
我理解把app/tmp放在.gitignore中,也理解为什么他们把根目录/plugins和/vendors放在目录中,因为它们是为跨多个项目共享的插件和供应商设计的。为什么是app/Config?我认为它包含了你在版本控制中想要的东西,比如database.php和bootstrap.php。

ukxgm1gy

ukxgm1gy1#

我想这可能与数据库配置有关,而数据库配置实际上是你在版本控制中不想要的。
想象一下,如果你的git仓库中有数据库配置文件,有人拉,他们会有你的数据库设置,然后他们会编辑数据库配置文件以满足他们的需求,现在它只是变成了一个乒乓球游戏与database.php文件。坦白说,那会非常非常烦人。
我的意思是,如果每个人都有相同的配置设置,它会工作,可能有点方便,但谁有所有的数据库配置跨机器?
bootstrap.php在另一方面,我有点同意,因为引导通常是一个项目和项目依赖于这些依赖关系。尽管如此,如果你想在不同的环境中使用不同的插件呢?例如在sendgrid.com开发副本上使用www.example.com发送电子邮件,在实时服务器上使用SMTP?
在我看来,它只是简单地离开配置目录忽略。它将配置留给开发人员。

5n0oy7gb

5n0oy7gb2#

接受的答案是正确的,因为您不希望将数据库配置放在存储库中,但稍微忽略了一个重要的点。
您不希望将数据库配置包含在存储库中;如果有人获得访问权限,他们将获得敏感的详细信息,如您的数据库的登录名/密码,因此获得直接访问它!
在CakePHP 3.x中,默认情况下只忽略包含数据库设置的app.php配置文件。其中包含一个app.default.php文件,该文件应用作模板,供人们在本地计算机或服务器上设置应用程序,而无需在存储库中存储敏感数据。
如果您正在部署一个带有CapistranoRocketeer之类的应用程序,那么一个好的做法是将包含数据库配置的文件保存在一个共享目录中,并在部署时以符号方式链接到该目录。这样,除了初始设置之外,您不需要担心在从存储库部署时丢失配置。

t5fffqht

t5fffqht3#

我目前正在使用CakePHP v.3.1。
在CakePHP文档中,它并没有说要从版本控制中排除app.php,而只是说要排除文件app_local.php。
https://book.cakephp.org/3/en/development/configuration.html
应用程序框架有一个config/app.php文件,其中包含的配置应该不会因部署应用程序的不同环境而有所不同。config/app_local. php文件应该包含因环境而异的配置数据,并且不应该签入版本控制。
对于我的例子,因为我使用.env文件,我不想在每个环境中设置多个配置文件,所以我将app.php包含在版本控制下,但使用env从.env文件中获取敏感参数,如下所示:

'username' => env('DB_LOGIN'),
'password' => env('DB_PASSWORD'),
'database' => env('DB_DATABASE'),

相关问题