I have a CakePHP application that I develop on my MacBook and then push to a "TEST" install environment and then across to a LIVE environment when I'm happy.
In the past I've done the following at each instance after I have git pull | fetched | merged:
- Edit APP/Config/core.php and change debug, TRUE to FALSE
- Edit other Configure flags
- Change the database connection
- Hope I've remembered to do all of the above
However,
You can set things up to automatically configure to each environment.
This assumes you are using Apache and can make edits to the apache configuration or can add things to .htaccess and the Apache webserver is configured to allow the Overrides.
Firstly in the highest .htaccess file in your CakePHP install make the following changes:
# The .htaccess file in your LIVE environment SetEnv ENVIRONMENT LIVE # The .htaccess file in your TEST environment SetEnv CAKEPHP_DEBUG 2 SetEnv ENVIRONMENT TEST # The .htaccess file in your HOME environment SetEnv CAKEPHP_DEBUG 2 SetEnv ENVIRONMENT HOME
Next make sure you have setup your database.php to allow for each environment
class DATABASE_CONFIG { // default and 2 work apfoods/ and test/ public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => '10.20.30.1', 'login' => 'liveuser', 'password' => 'liveuserpassword', 'database' => 'livedb', 'prefix' => '', //'encoding' => 'utf8', ); public $test_pallets = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => '10.20.30.1', 'login' => 'testuser', 'password' => 'testpassword', 'database' => 'testdb', 'prefix' => '', //'encoding' => 'utf8', ); // 3 and 4 home laptop public $home_pallets = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'homeuser', 'password' => 'homepassword', 'database' => 'homedb', 'prefix' => '', 'unix_socket' => '/tmp/mysql.sock' //'encoding' => 'utf8', ); public $home_pallets2 = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'homeuser', 'password' => 'homepassword', 'database' => 'homedb2', 'prefix' => '', 'unix_socket' => '/tmp/mysql.sock' //'encoding' => 'utf8', ); }
In APP/Model/AppModel.php you add some code to switch environments
// default db connection is default public $useDbConfig = 'default'; function __construct(){ parent::__construct(); $env = getenv('ENVIRONMENT'); $db_connections = Configure::read('datasources'); $db_connection = $db_connections[$env]; if ($db_connection){ $this->useDbConfig = $db_connection; } }
In APP/Config/core.php add some code to automatically set debug mode which gives you better errror reporting while developing in CakePHP
// use SetEnv CAKEPHP_DEBUG 2 in .htaccess // this only checks if CAKEPHP_DEBUG is defined // and then sets debug if it exists if (getenv('CAKEPHP_DEBUG')) { Configure::write('debug', 2); Configure::write('pallet_print_debug',true); } elseif { Configure::write('debug', 0); Configure::write('pallet_print_debug',false); } // this maps the Apps SetEnv ENVIRONMENT values to // the Cake database.php db connection values Configure::write('datasources', [ 'HOME' => 'home_pallets', 'TEST' => 'test_pallets', 'LIVE' => 'default' ]);
a
0 Comments