【问题标题】:CakePHP how to get shell script to use correct database connectionCakePHP 如何让 shell 脚本使用正确的数据库连接
【发布时间】:2015-03-20 14:32:28
【问题描述】:

我正在使用 CakePHP 2.x

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

我通过使用检查 $_SERVER['SERVER_NAME'] 的 switch 语句选择数据库连接来为 Web 应用程序解决此问题。当然,这不是 shell 脚本的选项。

所以我的问题是谁来编写我的脚本以避免以下问题:

  1. 硬编码设置,这会导致在环境之间移动时出现问题。
  2. 将所有动态设置作为参数传递给我的 shell 脚本 (Ex: myscript -db dev -url whocares.com)

我能想到的最佳选择是设置一个标志(例如:myscript -env local),然后让脚本动态设置数据库连接、域等。但这仍然感觉很尴尬,我希望有我忽略了一个更好的方法。

【问题讨论】:

    标签: php bash shell cakephp configuration


    【解决方案1】:

    我们使用这个插件正是为了这个目的,还有更多。

    https://github.com/josegonzalez/cakephp-environments

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

    【讨论】:

    • 这看起来很棒。它似乎允许开发人员通过测试来检测环境。请问你们用什么测试来确定环境?如果没有$_SERVER['SERVER_NAME'],我不确定如何区分我的本地服务器和远程服务器(使用 PHP)。
    • 我们在负载均衡器后面运行 4 台具有不同 IP 的不同机器,因此我们使用这些 IP 来检测它们。但就像我说的,你甚至可以设置一个像set CAKE_ENV=dev (Windows) 这样的全局系统变量,然后从 php.ini 中读取它。或者使用主机名、mac 地址、一些硬件 id……随便你。
    • 哦,所以我的 php 逻辑可以查找 $_SERVER['CAKE_ENV']。是这个主意吗?
    • 是的,就是这样。
    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多