CakePHP如何让shell脚本使用正确的数据库连接

CakePHP如何让shell脚本使用正确的数据库连接,php,bash,shell,cakephp,configuration,Php,Bash,Shell,Cakephp,Configuration,我使用的是CakePHP2.x 我试图弄清楚如何让shell脚本检测环境是本地dev服务器还是远程dev服务器。特别是,我需要我的脚本来选择正确的数据库连接,以及链接的正确基本URL 对于web应用程序,我通过选择数据库连接和一个检查$\u SERVER['SERVER\u NAME']的switch语句来解决这个问题。当然,这不是shell脚本的选项 因此,我的问题是,谁应该以避免以下问题的方式编写我的脚本: 硬编码设置,这将导致在环境之间移动时发生故障。 将所有动态设置作为参数传递给我的sh

我使用的是CakePHP2.x

我试图弄清楚如何让shell脚本检测环境是本地dev服务器还是远程dev服务器。特别是,我需要我的脚本来选择正确的数据库连接,以及链接的正确基本URL

对于web应用程序,我通过选择数据库连接和一个检查$\u SERVER['SERVER\u NAME']的switch语句来解决这个问题。当然,这不是shell脚本的选项

因此,我的问题是,谁应该以避免以下问题的方式编写我的脚本:

硬编码设置,这将导致在环境之间移动时发生故障。 将所有动态设置作为参数传递给我的shell脚本,例如:myscript-db dev-url whocares.com
我能想到的最好的选择是设置一个标志Ex:myscript-env local,然后让脚本动态地设置数据库连接、域等。但这仍然感觉很尴尬,我希望有一个更好的方法我忽略了。

我们使用这个插件正是为了这个目的,还有一些其他目的


它允许您检测您的环境或根据系统变量简单地设置环境。阅读文档,它解释了一切。

这看起来很棒。它似乎允许开发人员通过测试来检测环境。我能问一下你们用什么测试来确定环境吗?如果没有$\u SERVER['SERVER\u NAME'],我不确定如何使用PHP将本地服务器与远程服务器区分开来。我们在负载平衡器后面运行4台不同的机器,具有不同的IP,因此我们使用IP来检测它们。但正如我所说,您甚至可以设置一个全局系统变量,如set-CAKE_ENV=dev-Windows,并从php中读取它。或者使用主机名、mac地址、某些硬件id。。。所以我的php逻辑可以查找$\u SERVER['CAKE\u ENV']。就是这个意思吗?是的,就是这个意思。