Obtendo variáveis de ambiente no PHP-FPM com Nginx

3

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!

    
por chindit 09.06.2018 / 20:43

2 respostas

0

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.

    
por 20.08.2018 / 12:05
0

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.

    
por 20.08.2018 / 14:25