Environments
LUYA is shipped with several configuration files. These config files are in charge to configure the project for different stages or environments.
Below, all these configs and environments explained:
Overview
env.php
The env.php
file returns the currently used config, so this file is used to change the config on different environment. This file is ignored by GitHub by default. If a new project is created an example file named env.php.dist
will be provided (see Install).
config.php
Since version 1.0.21 of LUYA core the luya\Config is used to generate configs.
The config.php
file contains a luya\Config object, in order to defined components, modules or application level configurations for a certain environment use luya\Config -> env() method:
An example for define the db
component for certain environments:
$config->component('db', [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=local_db',
'username' => 'foo',
'password' => 'bar',
])->env(Config::ENV_LOCAL);
$config->component('db', [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dev_db',
'username' => 'foo',
'password' => 'bar',
])->env(Config::ENV_DEV);
$config->component('db', [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=prod_db',
'username' => 'foo',
'password' => 'bar',
])->env(Config::ENV_PROD);
There is also a more readable annotation with closures:
$config->env(Config::ENV_LOCAL, function(Config $config) {
$config->callback(function() {
define('YII_DEBUG', true);
define('YII_ENV', 'local');
});
$config->component('db', [
'dsn' => 'mysql:host=luya_db;dbname=luya_kickstarter',
'username' => 'luya',
'password' => 'luya',
]);
$config->module('debug', [
'class' => 'yii\debug\Module',
'allowedIPs' => ['*'],
]);
$config->module('gii', [
'class' => 'yii\gii\Module',
'allowedIPs' => ['*'],
]);
$config->bootstrap(['debug', 'gii']);
});
$config->env(Config::ENV_PROD, function(Config $config) {
$config->component('db', [
'dsn' => 'mysql:host=localhost;dbname=DB_NAME',
'username' => '',
'password' => '',
'enableSchemaCache' => true,
'schemaCacheDuration' => 0,
]);
$config->component('cache', [
'class' => 'yii\caching\FileCache'
]);
$config->application([
'ensureSecureConnection' => true, // https://luya.io/guide/app/security
]);
});
return $config;
The luya\Config has constants for all LUYA env types:
luya\Config::ENV_ALL
: All environmentsluya\Config::ENV_LOCAL
: local computer (local development stage)luya\Config::ENV_DEV
: dev/shared serverluya\Config::ENV_PREP
: preproduction serverluya\Config::ENV_CI
: CI serverluya\Config::ENV_PROD
: production