【发布时间】:2012-03-15 14:01:06
【问题描述】:
我想知道有没有一种方法可以设置配置,其中我可以有两个数据库条目,当环境是本地时和服务器上时工作。
很久以前,我在通过代码进行切换时遇到了一个解决方案。现在找不到了。你们是怎么做到的?
【问题讨论】:
标签: cakephp cakephp-1.3 cakephp-2.0
我想知道有没有一种方法可以设置配置,其中我可以有两个数据库条目,当环境是本地时和服务器上时工作。
很久以前,我在通过代码进行切换时遇到了一个解决方案。现在找不到了。你们是怎么做到的?
【问题讨论】:
标签: cakephp cakephp-1.3 cakephp-2.0
我有一个带有本地配置文件的设置。我在 app/config/core.php 的底部添加以下行:
if(file_exists(ROOT.'/app/config/core.local.php')) {
include_once(ROOT.'/app/config/core.local.php');
}
在 core.local.php 中,我可以覆盖本地机器上所有不同的设置。 database.php 也是如此。
【讨论】:
我使用的配置类正是这样做的: http://www.dereuromark.de/2010/08/17/development-vs-productive-setup
最近我将它重写为 2.0 作为插件版本。 它现在负责测试环境并减少您必须编写的配置行数: http://www.dereuromark.de/2012/02/25/dynamic-database-switching/
【讨论】:
path 数组)。但如果你的解决方案适合你,为什么不呢。
我认为它基于 IP 在本地环境 IP 为 127.0.0.1 在实时环境中,IP 永远不会是 127.0.0.1
我的看法
谢谢
检查 lib/Cake/Utility/String.php 查看名为的函数 公共静态函数 uuid()
干杯
再次感谢
【讨论】:
成功了
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'username',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
public $live = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'db.HOST.net',
'login' => 'username',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
public function __construct(){
if (isset($_SERVER) && isset($_SERVER['SERVER_NAME'])) {
if (strpos($_SERVER['SERVER_NAME'], 'localhost') === false) {
$this->default = $this->live;
}
}
}
}
【讨论】: