2011-06-17 63 views

回答

19

您可以設置它在你的構造。

class DATABASE_CONFIG { 

    var $live = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'mysql.live.com', 
     'login' => 'root', 
     'password' => '', 
     'database' => '', 
     'prefix' => '', 
    ); 

    var $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'root', 
     'password' => '', 
     'database' => '', 
     'prefix' => '', 
    ); 


     public function __construct() { 
     if (isset($_SERVER) && isset($_SERVER['SERVER_NAME'])) { 
      if (strpos($_SERVER['SERVER_NAME'], 'localhost') === false) { 
       $this->default = $this->live; 
      }  
     } 
    } 
} 

這將基本上根據你在哪裏切換你的配置。

+0

真棒解決方案,謝謝! – joseym 2011-10-17 20:49:13

+0

我發現這篇文章提供了一個非常強大的方法來設置這種基於環境的DB配置文件管理方法: http://www.sitepoint.com/deploy-cakephp-apps-on-appfog-the-right-方式/ – 2015-06-01 22:31:45

5

我得到了這個(我的開發域名以'.dev'結尾);

在bootstrap.php中

define('IS_LIVE',!(strpos($_SERVER['SERVER_NAME'], 'dev') !== false)); 

在database.php中

<?php 
class DATABASE_CONFIG 
{ 
    var $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => '127.0.0.1', 
     'login' => 'xxxx', 
     'password' => 'xxxx', 
     'database' => 'xxxx', 
     'prefix' => '', 
    ); 

    var $production = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => '127.0.0.1', 
     'login' => 'xxx', 
     'password' => 'xxx', 
     'database' => 'xxxx', 
     'prefix' => '', 
    ); 

    function __construct() 
    { 
     if (IS_LIVE) { 
      $this->default = $this->production; 
     } else { 
      $this->default = $this->default; 
     } 
    } 
} 
+0

IN蛋糕1.3它不起作用。 Cake返回SQL錯誤「SQL錯誤:1064:您的SQL語法中有錯誤;」 – giuseppe 2013-06-28 08:09:42

+0

2.3.x怎麼樣? – Jankeesvw 2013-06-30 10:35:12