数据库管理Cakephp
我需要在我的应用程序中设置到多个数据库的多个连接,一个用于开发,一个用于测试,另一个用于生产。我在stack overflow上找到了一些提示,通过url获取并传递许多不同的设置,所以我在我的应用程序上对其进行了改进,但我意识到,当我尝试运行迁移时,由于没有url可传递而无法工作,有没有其他方法可以做到这一点?或者,您是否打算管理与当前不同的应用程序模式?如果是生产或测试,这可能会将调试定义为false;如果是开发,则将调试定义为true。检查开发计算机的主机名 在linux或Windows上:数据库管理Cakephp,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我需要在我的应用程序中设置到多个数据库的多个连接,一个用于开发,一个用于测试,另一个用于生产。我在stack overflow上找到了一些提示,通过url获取并传递许多不同的设置,所以我在我的应用程序上对其进行了改进,但我意识到,当我尝试运行迁移时,由于没有url可传递而无法工作,有没有其他方法可以做到这一点?或者,您是否打算管理与当前不同的应用程序模式?如果是生产或测试,这可能会将调试定义为false;如果是开发,则将调试定义为true。检查开发计算机的主机名 在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
文件更容易。如果你需要做比这更复杂的事情。我做了一些类似的事情,在my path.php中,我将APP_模式变量定义为“development”,然后在my APP.php中,如果开发这个数据库,我会创建一个case选项,如果“测试”这个变量数据库和另一个beahviour,如果“production”,那么另一个beahviour,APP将具有这种行为。这有助于我为每个应用程序模式创建多个分支,然后当我需要发送到测试或生产时,我只需进行合并,然后发送到jenkins deploy it您需要在同一网站位置的数据库之间切换吗?因为我通常在自己的机器上开发,在自己的服务器上设置测试版本,最后在客户的服务器上进行生产。这是三个不同的位置。是的,这是我的情况,但我想设置一个变量或方法,我不需要为我的应用程序运行的每个位置设置不同的配置,因此我需要更少的配置或分支之间的冲突。您考虑过使用环境变量吗(来自服务器的主机配置)?不错。我使用一个单独的配置文件,将其放在webroot之上一级,并包含index.php中的()。将其放在webroot之外意味着a)无法远程访问,b)通常不在源代码控制范围内。