Passar variáveis de ambiente para o PHP CLI e o FPM

1

Eu quero usar variáveis de ambiente em meus aplicativos PHP, CLI e FPM. O que eu faço é eu:

  • exporte algumas variáveis em /etc/environment .
  • configure os dois php.ini (CLI e FPM) para variables_order = "EGPCS" .
  • configure o FPM www.conf para clear_env = no

O que eu espero é que as variáveis de ambiente estejam disponíveis nos aplicativos CLI e FPM. Na verdade, isso funciona apenas para o CLI. $_ENV do FPM não contém essas variáveis de ambiente.

Percebi que é possível definir variáveis de ambiente em www.conf , mas é inconveniente, pois tenho que copiar e colar todas as variáveis de /etc/environment e manter sempre dois arquivos em sincronia.

A questão é: é possível passar todas as variáveis de ambiente diretamente para uma aplicação PHP-FPM sem copiá-las em www.conf ?

    
por Kolyunya 12.04.2017 / 12:20

1 resposta

2

De os documentos :

By default, nginx removes all environment variables inherited from its parent process except the TZ variable.

Como você mencionou, você tentou configurá-los na configuração fastcgi, que é, na minha opinião, o melhor que você pode fazer nessa situação. Para o benefício de outros, isso é feito assim:

location ~ \.php$ {

    # ...
    fastcgi_param APPLICATION_ENV "production";
    fastcgi_param MY_OTHER_ENV "things";
    include fastcgi_params;

    # ...
}

Eu entendo a aversão a "copiar e colar" e concordo! Você deve olhar para usar uma ferramenta de gerenciamento de configuração, como Puppet, SaltStack, Ansible para gerenciar seus arquivos de configuração. Dessa forma, você pode facilmente sincronizar sua lista de variáveis de ambiente entre todos os locais necessários. Deixe-me saber se você precisar de mais informações sobre isso.

    
por 18.04.2017 / 08:45