DotEnv: O Lugar Perfeito Para as Configurações do Seu Projeto PHP

DotEnv: O Lugar Perfeito Para as Configurações do Seu Projeto PHP

Onde você armazena as configurações sensíveis do seu projeto PHP? Se as define diretamente em seu código, você pode estar correndo um enorme risco de Segurança.

Configurações como nomes de usuário de banco de dados, senhas de SMTP e outras informações sensíveis devem ficar em um local seguro. E o mais importante: fora do controle de versão do software (como Git, SVN e outros).

Neste artigo vou mostrar como utilizar o DotEnv de forma extremamente. Com duas linhas de código, todas as configurações importantes de seu projeto estarão disponíveis em variáveis de ambiente.

Essa é a ideia do projeto DotEnv. As configurações sensíveis ficam armazenadas em um arquivo chamado .env (o ponto caracteriza um arquivo oculto em sistemas Unix-Like).

Todas as variáveis definidas no .env são automaticamente carregadas para variáveis de ambiente. Ou seja, para buscar seus valores, podemos usar a função getenv() ou o array $_ENV.

Instalando o DotEnv

Para instalar o DotEnv, vou utilizar o Composer. Se você não utiliza Composer, o que está esperando? Veja este meu artigo com o básico do Composer. Se quiser ir mais além e aprender tudo sobre essa maravilhosa ferramenta, conheça o meu curso ULTIMATE COMPOSER.

Abra o terminal/prompt, no diretório-raiz da sua aplicação, e digite este comando:

composer require vlucas/phpdotenv

Depois de alguns segundos, o DotEnv terá sido completamente baixado e você verá esta saída:

Using version ^2.0 for vlucas/phpdotenv
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing vlucas/phpdotenv (v2.0.1)
    Downloading: 100%         
 
Writing lock file
Generating autoload files

Criando o Arquivo .env

Você precisa criar, no diretório-raiz do projeto, um arquivo chamado .env, que vai armazenar as variáveis. É importante colocar o ponto no começo, pois isso caracteriza um arquivo oculto, assim como é o .htaccess, por exemplo.

No arquivo, basta definir as variáveis com esta sintaxe:

NOME_DA_VARIAVEL=VALOR_DA_VARIAVEL

Esse arquivo segue o mesmo padrão de um arquivo Shell Script. Inclusive, você pode inserir comentários, iniciando a linha com sustenido:

# Explicação sobre a variável
NOME_DA_VARIAVEL=VALOR_DA_VARIAVEL

Se você estiver usando controle de versão (como Git ou SVN), lembre-se de não versionar o arquivo .env, por razões de segurança. Coloque-o no .gitignore para garantir que seja ignorado.

É recomendável criar um arquivo chamado .env.example, com as mesmas variáveis do .env, mas com valores genéricos, apenas de exemplo. Dessa forma é fácil criar o arquivo real a partir do exemplo. Bastaria copiar o .env.example para .env e alterar os valores.

Carregando as Variáveis de Ambiente

Agora que já temos o DotEnv instalado e o arquivo .env criado, precisamos carregar as variáveis do arquivo para variáveis de ambiente.

E isso é extremamente fácil! Apenas duas linhas!

Crie o arquivo index.php com este conteúdo:

<?php 
 
// autoload do Composer 
require 'vendor/autoload.php'; 
 
// as duas linhas que carregam as variáveis do .env para variáveis de ambiente 
$dotenv = new Dotenv\Dotenv( __DIR__ ); 
$dotenv->load();

Pronto! Todas as variáveis do arquivo .env agora estarão definidas como variáveis de ambiente.

Você pode confirmar isso desta forma:

print_r( $_ENV );

Você verá suas variáveis no array exibido.

Para buscar uma única variável, pode usar o array $_ENV ou a função getenv():

echo $_ENV['NOME_DA_VARIAVEL'];
// ou
echo getenv( 'NOME_DA_VARIAVEL' );

Conclusão

O DotEnv é a forma mais segura de armazenar as configurações sensíveis de seu projeto.

Você pode combinar essa técnica com um conceito de Bootstrapping, que explico neste artigo. Assim você terá um sistema seguro, rápido e confiável.

No meu Curso ULTIMATE PHP, explico diversas outras técnicas e dicas sobre PHP. Ensino desde o básico da linguagem, detalhando toda a teoria essencial, para criar sistemas robustos, confiáveis e seguros. Tudo de forma 100% prática, com exemplos. Clique Aqui e Conheça Melhor o Curso.

 

Aprenda Ainda Mais

15 Dicas, Boas Práticas e Fundamentos do PHP

Conheça Dicas FUNDAMENTAIS para programar em PHP de forma Profissional

Não se considere Programador PHP sem antes ler este guia e adotar estas práticas!

Baixe gratuitamente este guia com 15 Dicas de PHP

The following two tabs change content below.
Graduado em Ciência da Computação, pela Universidade Federal do Paraná (UFPR), é desenvolvedor de software desde 2008, com foco em Desenvolvimento Web com PHP.
  • Gabriel Silva

    Simples objetivo e útil. Parabéns pelo post.

    • Olá, Gabriel

      Obrigado!
      A ideia é bem simples. E é ainda mais simples de implementar. E traz mais Segurança, que é algo fundamental. :)

  • Geovane Krüger

    Olá, é melhor instânciar o Slim e seus códigos antes do DotEnv?

    • Olá. Se o Slim usar alguma configuração do .env, precisa instanciá-lo antes do Slim.

  • Ótimo artigo, somente um detalhe que fiquei na dúvida que não vi no artigo. O arquivo .env pode ser acessado via URL como o .htaccess, neste caso seria interessante adicionar a regra no Apache ou Nginx para não permitir acesso a estes arquivos certo? OU deixá-lo fora da pasta pública como você comenta sobre o arquivo config.ini no artigo de Bootstrapping.

    • Olá, Lucas.
      O ideal é sempre deixar arquivos de configuração e de lógica fora da pasta pública, seguindo a estrutura dos principais frameworks.
      Porém, por padrão, os arquivos ocultos não são acessíveis via URL. Então não precisa de regra para o .env.