Pare de usar env() dentro da sua aplicação Laravel (fora da config)
Venho compartilhar com vocês uma dica rápida sobre o Laravel. Vejo muitas pessoas enfrentando problemas ao tentar acessar variáveis de ambiente dentro da aplicação. O erro mais comum acontece quando os desenvolvedores utilizam a função env()
diretamente em suas classes ou serviços, para ler configurações do arquivo .env
, e depois não entendem por que, em alguns momentos, essa função retorna null
.
A explicação é simples: isso acontece por causa do fluxo de inicialização do Laravel. Para ajudar a visualizar, criei um diagrama que explica como esse processo funciona:

Como podemos ver na imagem acima, quando o Laravel recebe uma request (ou executa um comando, job, etc.), ele inicia pelo arquivo index.php
, que chama o bootstrap/app.php
. Nesse momento, o Laravel carrega as variáveis do arquivo .env
e, logo em seguida, lê os arquivos de configuração presentes no diretório config/
. Essas configurações são então armazenadas em cache (caso você utilize o comando php artisan config:cache
).
Após esse ponto, os Service Providers são registrados e o Kernel da aplicação assume o controle da execução. Por isso, não é recomendado utilizar env()
para acessar configurações após essa etapa, pois o Laravel já não dependerá mais do .env
diretamente durante o ciclo de vida da aplicação.
Errado (não recomendado fora da config/):
env('CHAVE')
Certo:
config('configuracao.chave')
Seguindo esse padrão, você evita problemas com null
e garante que sua aplicação seja compatível com o cache de configuração.