2
respostas

[Dúvida] A variável de ambiente DATABASE_URL não foi encontrada no arquivo .env.local

Criei o arquivo .env.local e inseri nele a variável de ambiente DATABASE_URL, mas a aplicação não identificou essa variável. Tive que editar o arquivo .env para aplicação voltar a funcionar.

Tanto o arquivo .env quanto .env.local estão na raiz do projeto.

O que fazer para que o Symfony consiga criar/ler as variáveis de ambiente a partir de .env.local?

2 respostas

Li os comentários no arquivo .env. Ele mostra um comando no composer que gera um arquivo .env.local.php:

composer dump-env prod

O arquivo .env.local.php resultante desse comando reúne as variáveis de ambiente dos arquivos .env e .env.local em um array.

Depois que criei esse arquivo .env.local.php, reiniciei o servidor PHP e aplicação voltou a funcionar.

Pode ser que o PHP Storm exporte o .env.local.php por padrão. Eu estou usando o Visual Studio Code, então isso pode ter feito a diferença.

Mas o problema não está inteiramente solucionado: quando tento criar o banco de dados com o CLI do Symfony (php .\bin\console doctrine:database:create), a seguinte mensagem aparece:

PS D:\alura\symfony-intro\controle_series_symfony> php .\bin\console doctrine:database:create

{"message":"Error thrown while running command \"doctrine:database:create\". Message: \"Environment variable not found: \"DATABASE_URL\".\"","context":{"exception":{"class":"Symfony\\Component\\DependencyInjection\\Exception\\EnvNotFoundException","message":"Environment variable not found: \"DATABASE_URL\".","code":0,"file":"D:\\alura\\symfony-intro\\controle_series_symfony\\vendor\\symfony\\dependency-injection\\EnvVarProcessor.php:172"},"command":"doctrine:database:create","message":"Environment variable not found: \"DATABASE_URL\"."},"level":500,"level_name":"CRITICAL","channel":"console","datetime":"2023-02-12T13:40:18.491308+00:00","extra":{}}
13:40:18 CRITICAL  [console] Error thrown while running command "doctrine:database:create". Message: "Environment variable not found: "DATABASE_URL"." ["exception" => Symfony\Component\DependencyInjection\Exception\EnvNotFoundException^ { …},"command" => "doctrine:database:create","message" => "Environment variable not found: "DATABASE_URL"."]
{"message":"Command \"doctrine:database:create\" exited with code \"1\"","context":{"command":"doctrine:database:create","code":1},"level":100,"level_name":"DEBUG","channel":"console","datetime":"2023-02-12T13:40:18.521710+00:00","extra":{}}

In EnvVarProcessor.php line 172:

  Environment variable not found: "DATABASE_URL".  


doctrine:database:create [-c|--connection [CONNECTION]] [--if-not-exists]

Então... por que o .env.local não é reconhecido pelo console?

Olá, Thiago. Tudo bem?

Primeiramente gostaria de pedir desculpas pela demora em responder o seu tópico

Como está o seu arquivo .env.local?

Estranho, porque aqui eu fiz o teste e funcionou