2009-06-29 63 views
6

我是一名RoR开发人员,但我目前正在使用CakePHP来处理一个无法调整服务器的项目。在我的Rails制作服务器中,Passenger被设置为自动使用“Production”环境,覆盖本地应用程序设置。我想设置我的cakephp应用程序来做同样的事情。您通常如何使用CakePHP完成这项工作?你是否设置了一个域解析器,或者你只是将core.php和database.php放在版本控制之外? 由于提前, 达维德如何配置CakePHP来检测我的开发/生产环境,或者只是将配置文件保留在版本控制之外?

回答

11

如果我明白问题的正确,这可能是你需要的东西:

Automatically choose database connections in 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; 
     } 
    } 
} 
+0

完美,正是啥子我一直在寻找 – nutsmuggler 2009-06-30 20:23:31

+0

高兴这篇文章帮助你:)请留下反馈 – Eddie 2009-07-06 15:57:45

1

你可以只创建包含单Configure::write('debug', 0) *指令一个额外的文件,导入,在core.php中的文件,并保持它的版本控制。两全其美。

*或任何其他你需要改变

1

对于数据库,你可以建立本地生产的连接设置,然后创建文件app/app_model.php,包括行:

class AppModel extends Model 
{ 
    var $useDbConfig = 'production'; 
} 

然后,您可以创建文件app/app_controller.php并解析域,并通过使用Configure :: write来告诉它使用哪个dbconfig以及任何其他core.php设置。

7

这可能是更好的定义PROD/dev在bootstrap.php中。这样你就可以在应用程序中重复使用常量。

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 
); 
相关问题