Skip to content

Instantly share code, notes, and snippets.

@emoa2l
Created May 16, 2011 15:26
Show Gist options
  • Save emoa2l/974645 to your computer and use it in GitHub Desktop.
Save emoa2l/974645 to your computer and use it in GitHub Desktop.
CakePHP dynamic database config
<?php
/**
* This is core configuration file.
*
* Use it to configure core behaviour ofCake.
*
* PHP versions 4 and 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package cake
* @subpackage cake.app.config
* @since CakePHP(tm) v 0.2.9
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/**
* In this file you set up your database connection details.
*
* @package cake
* @subpackage cake.config
*/
/**
* Database configuration class.
* You can specify multiple configurations for production, development and testing.
*
* driver => The name of a supported driver; valid options are as follows:
* mysql - MySQL 4 & 5,
* mysqli - MySQL 4 & 5 Improved Interface (PHP5 only),
* sqlite - SQLite (PHP5 only),
* postgres - PostgreSQL 7 and higher,
* mssql - Microsoft SQL Server 2000 and higher,
* db2 - IBM DB2, Cloudscape, and Apache Derby (http://php.net/ibm-db2)
* oracle - Oracle 8 and higher
* firebird - Firebird/Interbase
* sybase - Sybase ASE
* adodb-[drivername] - ADOdb interface wrapper (see below),
* odbc - ODBC DBO driver
*
* You can add custom database drivers (or override existing drivers) by adding the
* appropriate file to app/models/datasources/dbo. Drivers should be named 'dbo_x.php',
* where 'x' is the name of the database.
*
* persistent => true / false
* Determines whether or not the database should use a persistent connection
*
* connect =>
* ADOdb set the connect to one of these
* (http://phplens.com/adodb/supported.databases.html) and
* append it '|p' for persistent connection. (mssql|p for example, or just mssql for not persistent)
* For all other databases, this setting is deprecated.
*
* host =>
* the host you connect to the database. To add a socket or port number, use 'port' => #
*
* prefix =>
* Uses the given prefix for all the tables in this database. This setting can be overridden
* on a per-table basis with the Model::$tablePrefix property.
*
* schema =>
* For Postgres and DB2, specifies which schema you would like to use the tables in. Postgres defaults to
* 'public', DB2 defaults to empty.
*
* encoding =>
* For MySQL, MySQLi, Postgres and DB2, specifies the character encoding to use when connecting to the
* database. Uses database default.
*
*/
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'login' => '<username>',
'password' => '<password>',
'database' => '<db>',
'prefix' => '',
);
var $maint = array(
'driver' => 'mysql',
'persistent' => false,
'login' => '<username>',
'password' => '<password>',
'database' => '<db>',
'prefix' => '',
);
function __construct ()
{
//set this in your webserver config
//i.e. in apache SetEnv DATABASE_HOST "db1.domain.com"
if(isset($_SERVER['DATABASE_HOST'])){
$this->default['host'] = $_SERVER['DATABASE_HOST'];
$this->maint['host'] = $_SERVER['DATABASE_HOST'];
}
else
{
$this->default['host'] = 'localhost';
$this->maint['host'] = 'localhost';
}
}
}
@emoa2l
Copy link
Author

emoa2l commented May 16, 2011

I use this in a scenario where on a staging hostI have access to the db directly and thus define the DATBASE_HOST as the hostname of the database server, but from a remote machine I am not able to connect to the database via tcp port 3306. So on that system I use ssh and map localhost 3306 to the remote server 3306 and change my DATABASE_HOST to localhost on my local development webserver.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment