Existem diversos problemas com a abordagem típica para a configuração:
Para resolver estes problemas Yii introduz conceito simples de ambientes. Cada ambiente é representado por uma série
de arquivos presentes no diretório environments
. O comando init
é usado para inicializar um ambiente. O papel deste comando
é copiar todo o conteúdo presente no diretório do ambiente para a raíz do projeto onde todas as aplicações residem.
Por padrão existem dois ambientes: dev
e prod
. O primeiro é utilizado para desenvolvimento. Ele possui todas as ferramentas
de desenvolvimento e depuração habilitadas. O segundo é utilizado para deploy de produção. Todas as ferramentas de
desenvolvimento e depuração estão desabilitadas.
Tipicamente, diretórios de ambiente contém arquivos de inicialização como o index.php
e arquivos de configuração
com o sufixo de -local.php
. Estes são ou arquivos de configuração pessoal de membros da equipe que geralmente
estão localizados no diretório dev
ou configurações específicas de servidor. Por exemplo: configurações de conexão
do banco de dados de produção estaria no arquivo de configuração -local.php
dentro do diretório de ambiente prod
.
Os arquivos de configuração local são adicionados ao .gitignore
e nunca são enviados para o repositório de versionamento de código.
Para evitar a duplicação de configurações, as mesmas se sobrescrevem. Por exemplo, a aplicação frontend lê as configurações na seguinte ordem:
common/config/main.php
common/config/main-local.php
frontend/config/main.php
frontend/config/main-local.php
Parâmetros são lidos na seguinte ordem:
common/config/params.php
common/config/params-local.php
frontend/config/params.php
frontend/config/params-local.php
O arquivo de configuração posterior sobrescreve o anterior.
Aqui está o esquema completo: