我是一名RoR开发人员,但我目前正在与CakePHP合作开展一个我无法调整服务器的项目.在我的Rails生产服务器中,Passenger设置为自动使用"生产"环境,覆盖本地应用程序设置.我想设置我的cakephp应用程序来做同样的事情.你通常如何用CakePHP实现这一目标?您是否设置了域解析器,或者只是将core.php和database.php保留在版本控制之外?在此先感谢Davide
如果我正确地理解了这个问题,那么这可能是你需要的:
在CakePHP中自动选择数据库连接
简而言之,覆盖DATABASE_CONFIG
构造函数:
class DATABASE_CONFIG { //initalize variable as null var $default=null; //set up connection details to use in Live production server var $prod = array( // ... ); // and details to use on your local machine for testing and development var $dev = array( // ... ); function __construct () { if(isset($_SERVER['SERVER_NAME'])){ switch($_SERVER['SERVER_NAME']){ case 'digbiz.localhost': $this->default = $this->dev; break; case 'digbiz.example.com': $this->default = $this->prod; break; } } else // we are likely baking, use our local db { $this->default = $this->dev; } } }
在bootstrap.php中定义prod/dev可能更好.这样您就可以在应用程序中重用常量.
bootstrap.php中:
define('IS_PROD',(isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'cubismedia.com') ? true : false);
database.php中:
function __construct() { if (IS_PROD) { $this->default = $this->prod; } else { $this->default = $this->dev; } } //development public $dev = array( //db settings ); //production public $prod = array( //db settings );