Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting Bolt Configuration Per Environment

Tags:

php

bolt-cms

The Bolt documentation mentions setting up configuration files for each environment, but doesn't explain how to make it happen.

When you have multiple environments for the same site, like development, staging, or production, you’ll want parts of the config to be the same, and some different per environment. You’ll probably have different database info and debug settings. This can be accomplished by splitting the config.yml file. Put all settings you share over all environments in the default config.yml, you can commit this in your version control system if wanted. Every setting which is different per environment, or which you do not want in version control (like database info), you put in config_local.yml. First config.yml is loaded and then config_local.yml, so that config_local.yml can override any setting in config.yml.

Of course I have no problem creating an additional config file, but how do I tell Bolt which environment it's running in and which file it ought to load?

like image 412
Royall Spence Avatar asked Aug 21 '26 05:08

Royall Spence


1 Answers

Turns out Bolt is completely unaware of its environment. It always loads config.yml followed by config_local.yml, regardless of domain name.

From Config.php, starting at line 226:

protected function parseGeneral()
{
    // Read the config and merge it. (note: We use temp variables to prevent
    // "Only variables should be passed by reference")
    $tempconfig = $this->parseConfigYaml('config.yml');
    $tempconfiglocal = $this->parseConfigYaml('config_local.yml');
    $general = Arr::mergeRecursiveDistinct($tempconfig, $tempconfiglocal);

The solution to my problem is to never allow config_local.yml to get deployed.

like image 62
Royall Spence Avatar answered Aug 23 '26 20:08

Royall Spence



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!