qual é a melhor maneira de carregar arquivos de configuração para diferentes versões do mesmo projeto no mesmo servidor?

votos
3

Eu tenho um grande projeto de php que se baseia em dois níveis de arquivos de configuração.

Na minha pasta de projeto eu tenho um default.config.ini que é carregado e, em seguida, fundiu-se com um arquivo de configuração específica site.

No momento em que o código está a ler uma variável de ambiente PROJECT_CONFIGque aponta para o arquivo de configuração específica. Isso funciona bem para cada desenvolvedor trabalhando em sua própria máquina. O problema surge quando mover o projeto para o servidor e quer ter três instâncias do mesmo projeto: Dev, Palco, Live.

Nós já não pode usar o env var global desde que ele precisa ser diferente de cada subdomínio (projeto é configurado como dev.domain.com, stage.domain.com e www.domain.com).

Tenho considerado converter a variável de servidor HTTP_HOSTem um nome env var e usando isso para definir a configuração direita (ou seja, quando um usuário requisitou uma página de dev.domain.com, o código ficaria para uma var env chamado dev_domain_com), mas eu queria veja o que as outras pessoas estão fazendo e que eles recomendam.

Qualquer conselho seria muito apreciada, obrigado antecipadamente

Publicado 19/05/2009 em 18:08
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

A ideia de David Schmitt é o mais elegante. Eu podia ver um caso para usar $_SERVER['HTTP_HOST']para determinar qual servidor você está no e definir o caminho em conformidade. Um desses casos poderia ser se você não tem privilégios para modificar os arquivos de configuração de host virtuais do servidor. Por exemplo:

<?php
  switch($_SERVER['HTTP_HOST']){
    case 'dev.domain.com':
      $path = '/home/dev_user/project.config.ini';
      break;
    case 'stage.domain.com':
      $path = '/home/stage_user/project.config.ini';
      break;
    case 'www.domain.com':
      $path = '/home/live_user/project.config.ini';
      break;
    default:
      $path = '';
  }
  if(!defined('PROJECT_CONFIG')){
    define('PROJECT_CONFIG', $path);
  }
  unset($path);
?>

Nota: Dependendo da configuração do servidor, você pode querer substituir $_SERVER['HTTP_HOST']com $_SERVER['SERVER_NAME'].

Respondeu 18/01/2010 em 20:37
fonte usuário

votos
2

Use de apache SetEnv directiva para definir o PROJECT_CONFIGno recipiente de configuração de acesso à instância do aplicativo:

SetEnv PROJECT_CONFIG /src/dev/app.config.php
Respondeu 19/05/2009 em 18:19
fonte usuário

votos
0

Eu acho que sua solução atual é apenas multa. As configurações de ambiente estão lá por uma razão, afinal. Eu vi sua maneira de fazer as coisas utilizado para uma larga escala cms proprietários que eu usei para trabalhar.

Eu preciso fazer a mesma coisa com ter locais dev / estágio / produção que carregam diferentes configurações e pretende usar as configurações de ambiente e tê-lo detectar o nome do host como um retorno se a configuração env não está definido.

Respondeu 18/01/2010 em 11:43
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more