2011-06-17 55 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