Cakephp 1.3 appfog database configuration - php

i just moving my blog to appfog. I am currently using cakephp 1.3.x. I know I need to upgrade, I am already working on it. But in the meantime, I would like to get my blog working. I am not able to configure the database file.
I know we need to add
$services_json = json_decode(getenv('VCAP_SERVICES'),true);
$af_mysql_config = $services_json['mysql-5.1'][0]['credentials'];
// Database settings
Configure::write('Database.config', array(
'default' => array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => $af_mysql_config['hostname'],
'login' => $af_mysql_config['username'],
'password' => $af_mysql_config['password'],
'database' => $af_mysql_config['name'],
'prefix' => '',
'encoding' => 'utf8',
)
));
I just want to know how we can send the setting to database config.
I appreciate any help.

I just did this:
class DATABASE_CONFIG {
public $default = null;
function __construct() {
$services = getenv("VCAP_SERVICES");
$services_json = json_decode($services, true);
$mysql_config = $services_json["mysql-5.1"][0]["credentials"];
$this->default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => $mysql_config["hostname"],
'login' => $mysql_config["user"],
'password' => $mysql_config["password"],
'database' => $mysql_config["name"],
'prefix' => '',
'port' => $mysql_config["port"],
);
}
}

Related

How does DataSource test in cakephp 2

We have custom DataSource and want to test that verifies the data after find method execute equals to one not customized.As I thought it, it would be possible if we can change Datasource in test code.I try many case, but I couldn't make it work.
public $default = [
'datasource' => 'CustomPostgres',
'persistent' => false,
'host' => 'localhost',
'port' => '5432',
'login' => 'hoge',
'password' => 'hogehoge',
'database' => 'prod',
'schema' => 'public',
'prefix' => '',
'encoding' => 'utf8'
];
public $test = [
'datasource' => 'CustomPostgres',
'persistent' => false,
'host' => 'localhost',
'port' => '5432',
'login' => 'hoge',
'password' => 'hogehoge',
'database' => 'test_prod',
'schema' => 'public',
'prefix' => '',
'encoding' => 'utf8'
];
public $old = [
'datasource' => 'Database/Postgres',
'persistent' => false,
'host' => 'localhost',
'port' => '5432',
'login' => 'hoge',
'password' => 'hogehoge',
'database' => 'dev',
'schema' => 'public',
'prefix' => '',
'encoding' => 'utf8'
];
public $test_old = [
'datasource' => 'Database/Postgres',
'persistent' => false,
'host' => 'localhost',
'port' => '5432',
'login' => 'hoge',
'password' => 'hogehoge',
'database' => 'test_dev',
'schema' => 'public',
'prefix' => '',
'encoding' => 'utf8'
];
//try1
$this->Model->setDataSource('test_old');
//try2
ConnectionManage::create('test_old',///);
//try3
////in fixture File and ClassRegistry:Init("Model")
$useDbConfig = "old";
////inner start::up
ClassRegistry:Init("Model");
//try4 extends model
ModelForOldSetting extends Model{
$useDbConfig = "old";
}
Above codes didn't work and it always emit error says
MissingConnectionException: Database connection "Postgres" is missing, or could not be created ,when running test however it works fine when setting default datasource Database/Postgres running local browser without test.
So, I'm really confused why Database connection "Postgres" is missing.Any idea makes me appreciate to them.
I finally found irritating and stupid irritating code by outer database.php file overrides datasources' setting.Following code works fine after appropriate settings.
ModelForOldSetting extends Model{
$useDbConfig = "dev";
$useTables = "models";
}
ClassRegistry:Init("ModelForOldSetting");
$model = $this->getMockForModel('ModelForOldSetting');

Hostinger setup

I do not know what put in datasource. What does it mean by datasource? I am using hostinger for my server. Thank you.
<?php
class DATABASE_CONFIG {
public $default = array(
'datasource' => '',
'persistent' => false,
'host' => 'mysql.hostinger.jp',
'login' => 'u88_ana',
'password' => 'secret',
'database' => 'u88_vir',
'encoding' => 'utf8'
);
}

What is the difference between a public = $default and public = $test?

I'm trying to learn something new by going through CakePHP's tutorials and in the section where you link a database.php to your MAMP/SQL, it asks for you to change the information in an array calls public $default. However there is also a public $test array in the same file.
What is the public $test array for? I know I can run my page by just linking the $default but does the $test serve a purpose?
ie:
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'admin',
'password' => 'admin',
'database' => 'blog_tutorial',
'prefix' => '',
//'encoding' => 'utf8',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'admin',
'password' => 'admin',
'database' => 'blog_tutorial',
'prefix' => '',
//'encoding' => 'utf8',
);
}
Just curious, thanks!

Cakephp 2.3.7 Url Wiriting Not Properly Config/ Undefined Index: Datasource

I am trying to spin up a application I downloaded from a repository. It is built with Cakephp 2.3.7. The first error I am getting is URL Writing is not properly configured on your server.I have checked my .htaccess files and everything is ok. I have check Apache and LoadModule rewrite_module modules/mod_rewrite.so is as such. Not to sure what else to check. The other notice I am getting is Undefined Index: Datasource. I went to my config file as it is as follows:
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'icgw',
'prefix' => '',
);
var $array = array(
'datasource' => 'Array'
);
var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
);
}
That said I did try
var $array = array(
'datasource' => 'Database/MySql'
);
Unfortunately I had no luck. Any thoughts on this? Im not familiar with working in Cakephp 2.3.7. I use Cakephp 1.3.
I fixed the Undefined Index: Datasource error. This is what I did.
Instead of
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'icgw',
'prefix' => '',
);
var $array = array(
'datasource' => 'Array'
);
I did this.
var $default = array(
'datasource' => 'Database/Mysql',
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'icgw',
'prefix' => '',
);

How to config cakephp 2.2 database connection with appfog service

I'have some problem to config cakephp database connection with appfog service.
AppFog provides JSON database config by VCAP_SERVICES variable like this
{
"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
);
}
); }
In cakephp database config file like this
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',
);
How to fix this problem?
You will want to parse the json into an array (if you only have ONE mysql db bound to the app, if you have more you will need to change the "0" to another number to reflect the second bound mysql service):
$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',
);
The above changes "username" to "user" and basically follows the premise of what appfog does with Wordpress: https://github.com/appfog/af-php-wordpress/blob/master/wp-config.php

Categories