2012-10-03 44 views
0

我有一些问题配置cakephp数据库连接与appfog服务。如何配置cakephp 2.2与appfog服务的数据库连接

AppFog通过VCAP_SERVICES变量提供JSON数据库配置这样

{ 
    "mysql-5.1" =  (
       { 
      credentials =    { 
       host = "ap01-user01.c0ye1hvnkw6z.ap-southeast-1.rds.amazonaws.com"; 
       hostname = "ap01-user01.c0ye1hvnkw6z.ap-southeast-1.rds.amazonaws.com"; 
       name = ?????????????; 
       password = ????; 
       port = 3306; 
       user = ?????; 
       username = ???????????; 
      }; 
      label = "mysql-5.1"; 
      name = "???????-mysql-56200"; 
      plan = free; 
      tags =    (
       mysql, 
       "mysql-5.1", 
       relational 
      ); 
     } 
    ); } 

在CakePHP数据库配置文件中像这样

public $default = array(
     'datasource' => 'Database/Mysql', 
     'persistent' => false, 
     'host' => $mysql_config["hostname"], 
     'login' => $mysql_config["username"], 
     'password' => $mysql_config["password"], 
     'database' => $mysql_config["name"], 
     'prefix' => '', 
     //'encoding' => 'utf8', 
    ); 

如何解决这个问题?

回答

2

你会想将json解析成一个数组(如果你只有一个mysql数据库绑定到应用程序,如果你有更多的你需要将“0”改为另一个数字来反映第二个绑定的mysql服务):

$services = getenv("VCAP_SERVICES"); 
$services_json = json_decode($services,true); 
$mysql_config = $services_json["mysql-5.1"][0]["credentials"]; 

public $default = array(
    'datasource' => 'Database/Mysql', 
    'persistent' => false, 
    'host' => $mysql_config["hostname"], 
    'login' => $mysql_config["user"], 
    'password' => $mysql_config["password"], 
    'database' => $mysql_config["name"], 
    'port' => $mysql_config["port"], 
    'prefix' => '', 
    //'encoding' => 'utf8', 
); 

上述变化“用户名”为“用户”,基本上遵循appfog与WordPress做什么前提:https://github.com/appfog/af-php-wordpress/blob/master/wp-config.php