Você pode definir a variável de ambiente em /etc/php/php-fpm.d/www.conf como este:
%código%
Então você poderá obtê-lo com env[APP_ENV] = development
como você esperava.
Eu já defini algumas variáveis de ambiente como APP_ENV
no meu arquivo /etc/environment
, no meu ArchLinux.
Se eu digitar printenv
, eu os vejo.
Eu criei este arquivo de teste simples chamado… test.php
<?php
var_dump(getenv('APP_ENV'));
var_dump(getenv());
Se eu executar php test.php
, tudo estiver OK, vejo minhas variáveis ENV.
Mas quando tento acessar o arquivo via HTTP ... não há nada no meu env!
Claro que alterei a configuração de /etc/php/php-fpm.d/www.conf
para definir clear_env = no
Estas são as linhas afetadas:
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
clear_env = no
E eu reiniciei os serviços php-fpm
e nginx
mas ... ainda nada no meu env. Script de retorno bool(false)
.
Então… estou sentindo falta de algo?
Esta é a minha versão do php-fpm:
php-fpm --version
PHP 7.2.6 (fpm-fcgi) (built: May 26 2018 07:45:18)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
E minha versão Nginx
nginx -v
nginx version: nginx/1.14.0
O que devo fazer para acessar minhas variáveis env em um contexto PHP-FPM?
Muito obrigado!
Você pode definir a variável de ambiente em /etc/php/php-fpm.d/www.conf como este:
%código%
Então você poderá obtê-lo com env[APP_ENV] = development
como você esperava.
Quando você digita printenv ou php test.php, você vê as variáveis de ambiente porque elas existem.
Quando você "tenta acessar o arquivo via HTTP ... não há nada em [seu] env". Exatamente suas variáveis de ambiente não estão definidas.
Por que você esperaria um comportamento diferente? Arquivos como / etc / environment, / etc / profile e / etc / bashrc são apenas originados quando você usa um shell, não quando um daemon é executado.