
Compartilhar:
Diana é defensora de desenvolvedores na Vonage. Ela gosta de comer ostras frescas.
Como usar variáveis de ambiente do PHP no Symfony
Tempo de leitura: 3 minutos
Introdução
As variáveis de ambiente (env vars) permitem que você configure seu aplicativo Symfony com base no ambiente de execução. Este tutorial irá orientá-lo sobre como usar variáveis de ambiente em um projeto Symfony.
Entendendo as variáveis de ambiente e os parâmetros
O Symfony utiliza variáveis de ambiente para armazenar valores de configuração, como credenciais de banco de dados, chaves de API e outras informações confidenciais ou específicas do ambiente. Esses valores podem ser definidos em um arquivo arquivo .env ou diretamente no ambiente do servidor. Enquanto as variáveis de ambiente definem valores no nível do sistema ou da aplicação, os parâmetros são armazenados no contêiner de serviços e podem fazer referência a variáveis de ambiente.
Configurando variáveis de ambiente
Usando o .env Arquivo
Os projetos Symfony vêm com um .env arquivo no qual é possível definir variáveis de ambiente:
# .env
VONAGE_API_KEY=your_api_key
VONAGE_API_SECRET=your_api_secretVocê também pode criar um env.local arquivo, que substituirá as configurações do seu ambiente local.
# .env.local
VONAGE_API_KEY=your_production_api_key
VONAGE_API_SECRET=your_production_api_secret Acesso às variáveis de ambiente no Symfony
No seu .env ou env.local arquivo, há uma variável chamada APP_ENV. É essa configuração que determina quais arquivos de configuração devem ser lidos em tempo de execução; ela pode ser definida como prod para produção (por exemplo, se você estiver usando uma Plataforma como Serviço, como Platform.sh), test para um ambiente do tipo UAT (Teste de Aceitação do Usuário) ao executar ferramentas como PHPUnit ou PHPStan e, finalmente, dev para seu ambiente de desenvolvimento local. Existem dois métodos diferentes pelos quais você pode recuperar a configuração carregada.
Nos arquivos de configuração
O Symfony permite fazer referência a variáveis de ambiente em arquivos de configuração usando a %env(VAR_NAME)% sintaxe. Por exemplo, em config/packages/vonage.yaml:
Vonage:
api_key: '%env(VONAGE_API_KEY)%'
api_secret: '%env(VONAGE_API_SECRET)%' Na seção “Serviços”
É possível injetar variáveis de ambiente nos serviços, especificando-as em config/services.yaml:
parameters:
vonage.api_key: '%env(VONAGE_API_KEY)%'
vonage.api_secret: '%env(VONAGE_API_SECRET)%'Em seguida, na sua service classe:
namespace App\Service;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
class VonageService
{
private string $apiKey;
private string $apiSecret;
public function __construct(private
ContainerBagInterface
$config)
{
$this->apiKey = $this->params->get('vonage.api_key');
$this->apiSecret = $this->params->get('vonage.api_secret');
}
}
Como alternativa, você pode usar a função getenv() :
$apiKey = getenv('VONAGE_API_KEY');
$apiSecret = getenv('VONAGE_API_SECRET');Na Biblioteca Padrão, trata-se essencialmente apenas de um wrapper para o $_ENV[] Superglobal; no entanto, recomenda-se usar a configuração do Symfony, que oferece um conjunto muito mais versátil de ferramentas para lidar com variáveis de ambiente.
Validação e normalização de variáveis de ambiente
O Symfony oferece um env() processador para transformar e validar variáveis de ambiente:
parameters:
vonage_api_key: '%env(string:VONAGE_API_KEY)%'
vonage_api_secret: '%env(string:VONAGE_API_SECRET)%' Quando usar variáveis de ambiente em vez de parâmetros
Use parâmetros para valores que permanecem constantes em todos os ambientes.
Use variáveis de ambiente para valores que variam de acordo com o ambiente, como chaves de API e segredos.
Otimização do desempenho
Para melhorar o desempenho na produção, grave as variáveis de ambiente em um arquivo PHP compilado:
composer dump-env prodIsso gera .env.local.php, permitindo que o Symfony carregue variáveis de ambiente sem analisar .env arquivos em tempo de execução.
Depuração de variáveis de ambiente e parâmetros
Use os seguintes comandos para verificar as configurações atuais:
bin/console debug:container --env-vars
bin/console debug:container --parameters Considerações sobre segurança
Nunca envie dados confidenciais no
.envarquivo para o controle de versão.Use
.env.localpara substituições locais e configure os ambientes de produção usando variáveis de ambiente reais.Verifique as variáveis de ambiente antes de usá-las.
Entendendo a diferença entre o ambiente do Symfony e o ambiente do servidor
Ambiente do Symfony (
APP_ENV) define o modo de aplicação (por exemplo,dev,prod,test).Ambiente do servidor refere-se à máquina física ou virtual na qual o aplicativo está sendo executado.
Conclusão
Com as variáveis de ambiente, o Symfony oferece uma maneira bacana de adaptar seu aplicativo para qualquer ambiente — desenvolvimento, teste ou produção — sem precisar codificar nada de forma rígida, mantendo-o limpo e seguro.
Tem alguma dúvida ou quer compartilhar o que está criando?
Inscreva-se no Boletim Informativo para Desenvolvedores
Siga-nos no X (antigo Twitter) para ficar por dentro das novidades
Assista aos tutoriais no nosso canal do YouTube
Conecte-se conosco na página de desenvolvedores da Vonage no LinkedIn
Fique conectado e acompanhe as últimas notícias, dicas e eventos para desenvolvedores.