2009-06-29 64 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 
); 
相關問題