How to add Local Config Variables to Yii

Posted by on Jun 30, 2011 in Software Development, Web | 2 comments

Often times you want to be able to specify configuration parameters or settings that only apply to a single environment. These local configuration don’t need to, and shouldn’t be entered into version control, and should over ride default values. I needed a solution for a project I was working on so I wrote one for Yii.

The main configuration file protected/config/main.php returns an array of parameters. Edit this file to merge 2 arrays, 1 from main.php, and another from local.php.

Edit main.php to look like this:


return CMap::mergeArray(
    'name'=>'Web app',

... other parameters ...

      // this is used in contact page
      'adminEmail'=>'web[email protected]',

// return an array of custom local configuration settings
function local_config()
  if (file_exists(dirname(__FILE__).'/local.php'))
    return require_once(dirname(__FILE__).'/local.php');

  return array();

And then add any of your own configuration to local.php in the same config directory.

return array(
      'connectionString' => 'mysql:host=localhost;dbname=db_name',
      'username' => 'my_user',
      'password' => 'secret',
          'levels'=>'trace, info, error, warning',
    // this is used in contact page
    'adminEmail'=>'[email protected]',

Here we’ve overridden the adminEmail parameter to [email protected], we’ve added in custom database username and password, and we’ve enabled logging.

Feel free to use this as a straightforward way to add custom config values to your Yii project. Just remember to make local.php an ignored file in Git or Subversion.


  1. Hi,i came across to your site and found your tutorial.It’s great.Is it possible to add write or change the local.php content from yii?Suppose i want to activate and deactivate modules etc.Thanks a lot. :)

  2. It definitely would be possible to build that functionality from yii. You’d have to handle all the complexity that goes into nested array statements, and a nice UI To display it all, but it’s perfectly do-able. I’d love to see the code if you make it.


  1. How Override Yii framework’s config/console.php with local console configuration file? | Gravity Layouts - [...] framework’s config/main.php file can be overwritten by a local.php configuration file via an array_merge. This allows me to set …

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>