Skip to content

Environment-based configuration class (for example in development, testing, staging and production).

Notifications You must be signed in to change notification settings

chris-peng-1244/yii-environment

 
 

Repository files navigation

yii-environment Latest Stable Version

Environment-based configuration class (for example in development, testing, staging and production).

Simple class used to set configuration and debugging depending on environment. Using this you can predefine configurations for use in different environments, like development, testing, staging and production.

The main config (main.php) is extended to include the Yii paths and debug flags. There are mode_<environment>.php files for overriding and extending main.php for specific environments. Additionally, you can overrride the resulting config by using a local.php config, to make changes that will only apply to your specific installation.

This class was designed to have minimal impact on the default Yii generated files. Minimal changes to the index/bootstrap and existing config files are needed.

The Environment is determined with PHP's getenv(), which searches $_SERVER and $_ENV. There are multiple ways to set the environment depending on your preference. Setting the environment variable is trivial on both Windows and Linux, instructions included. You can optionally override the environment by creating a mode.php in the config directory.

If you want to customize this class or its config and modes, extend it! (see ExampleEnvironment.php)

Requirements

Tested on Yii 1.1.8 - 1.1.14, should work on all versions.

Installation

Installation via Composer

Since version 5 the preferred installation method is through Composer. We assume the vendor directory is placed in protected/vendor.

  1. Add the dependency to your project

    php composer.phar require marcovtwout/yii-environment "5.*"
    
  2. Modify your index.php (and other bootstrap files)

  3. Modify your main.php config file and add mode specific config files

  4. Set your local environment (see next section)

Installation from zip file

See the previous instructions: https://github.com/marcovtwout/yii-environment/tree/4.0.1#installation

Setting environment

Here are some examples for setting your environment to DEVELOPMENT.

Windows

  1. Go to: Control Panel > System > Advanced > Environment Variables
  2. Add new SYSTEM variable: name = YII_ENVIRONMENT, value = DEVELOPMENT

Linux/Mac

  1. Open profile files:
  • Global bash shell: /etc/profile
  • Apache (as service): /etc/apache2/envvars
  1. Add the following line: export YII_ENVIRONMENT="DEVELOPMENT"

Apache only (cannot be used for console applications)

  1. Check if mod_env is enabled
  2. Open your httpd.conf or create a .htaccess file
  3. Add the following line: SetEnv YII_ENVIRONMENT DEVELOPMENT

Project only

  1. Create a file mode.php in the config directory of your application.
  2. Set the content of the file to: DEVELOPMENT

Usage

Update bootstrap files

See example-index/index.php

Structure of config directory

Your protected/config/ directory will look like this:

config/main.php                     (Global configuration)
config/mode_development.php         (Environment-specific configurations)
config/mode_test.php
config/mode_staging.php
config/mode_production.php
config/local.php                    (Optional, local override for mode-specific config. Don't put in your SVN!)

Modify your config/main.php

See example-config/main.php

Optional: in configConsole you can copy settings from configWeb by using value key inherit (see examples folder).

Create mode-specific config files

Create config/mode_<mode>.php files for the different modes. These will override or merge attributes that exist in the main config.

Optional: also create a config/local.php file for local overrides.

Credits

Original sources: http://www.yiiframework.com/doc/cookbook/73/

About

Environment-based configuration class (for example in development, testing, staging and production).

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%