【问题标题】:Database management Cakephp数据库管理 Cakephp
【发布时间】:2017-11-24 17:39:53
【问题描述】:

我需要在我的应用程序中设置到多个数据库的多个连接,一个用于开发,一个用于测试,另一个用于生产。我在堆栈溢出中发现了一些提示,通过 url 获取并传递许多不同的设置,因此我在我的应用程序上对其进行了改进,但我意识到当我尝试运行由于没有 url 而不起作用的迁移时通过,还有其他方法可以做到吗?或者您是否打算管理与今天不同的应用模式?这也可以将 debug 定义为如果生产或测试为 false,如果为开发则为 true。

【问题讨论】:

  • 您需要在同一个网址的数据库之间切换吗?因为我通常在自己的机器上开发,在自己的服务器上设置测试版本,最后在客户的服务器上进行生产。这是三个不同的位置。
  • 是的,这是我的情况,但我想设置一个变量或方法,我不需要为我的应用程序运行的每个地方设置不同的配置,所以我需要减少我的分支之间的配置或冲突。
  • 您是否考虑过使用环境变量(来自您服务器的主机配置)?

标签: cakephp cakephp-3.0


【解决方案1】:

检查您的开发计算机的主机名是什么。

在 Linux 或 Windows 上:

hostname

将您的app/config/app.default.php 复制到具有该主机名而不是单词default 的文件中。

编辑app/Console/Installer.php文件可以改变createAppConfig函数如下:

public static function createAppConfig($dir, $io)
{
    $appConfig = $dir . '/config/app.php';
    $defaultConfigPath = $dir . '/config/app.default.php';
    $hostnameConfigPath = $dir . '/config/app.' . gethostname() . '.php';
    $defaultConfig = file_exists($hostnameConfigPath) ? $hostnameConfigPath : $defaultConfigPath;
    if (!file_exists($appConfig)) {
        copy($defaultConfig, $appConfig);
        $io->write('Created `config/app.php` file');
    }
}

现在,当您在项目上运行 composer install 时,它将使用 app.default.php 配置或与当前机器的主机名匹配的其他配置。

这会将所有配置设置耦合到环境或默认值。这可能会解决您的一些问题,但如果您想在开发工作站上切换数据库。自己手动编辑app.php 文件更容易。如果你必须做比这更复杂的事情。

【讨论】:

  • 不错。我使用了一个单独的配置文件,我将它放在 webroot 的上一级和 index.php 中的 include()。将它放在 webroot 之外意味着 a) 它不能被远程访问并且 b) 它通常在你的源代码控制之外。
【解决方案2】:

我做了类似的事情,在我的 path.php 中,我将 APP_MODE 变量定义为“开发”,然后在我的 app.php 中,如果开发此数据库,我会创建一个案例选项,如果“测试”这个,应用程序将具有此行为变量数据库,这是另一种行为,如果“生产”则另一种。这有助于我为每个 APP_MODE 创建许多分支,然后当我需要发送到测试或生产时,我只需进行合并,然后发送到 jenkins 部署它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    相关资源
    最近更新 更多