5
respostas

Env File

Vi que as configurações da DB estão no arquivo. Mas por que não colocar no arquivo .env?

5 respostas

Oi Roberto, tudo bem? Em produção não se deve por neste arquivo por questão de segurança, os arquivos .env por serem de texto simples, alguém pode acessar o arquivo diretamente via URL e ler todas as informações sobre sua aplicação. Mas Localmente você pode usar sem problema nenhum. Pegou a ideia?

Mas mesmo se eu colocar em local que não pode ser acessado? Da mesma forma que o env pode, em teoria, ser acessado, os arquivos de configuração também...

A diferença dos outros arquivos de configuração é que eles são .php, arquivos .php são interpretados e só exibem alguma coisa caso tenha algum comando de saída, como eles não tem, nada é visualizado. Alias, arquivos php ainda podem ser brecha caso você force ao invés da interpretação, o download, o que no geral, não acontece por padrão. Os arquivos PHP também podem ter regras de segurança para invalidar a execução do arquivo caso acessados diretamente, o que não é possível somente com arquivos de texto como o .env.

Você pode mudar a questão das permissões, mas ainda não é recomendado, visto que, nem sempre no servidor, você terá essa oportunidade de mudar as permissões, visto que, talvez mudando as permissões, o próprio Framework pode perder a capacidade de ler o arquivo.

@Wanderson estou com a mesma dúvida do Roberto, você disse na primeira resposta que o arquivo .env poderia ser acessado via URL, mas os únicos arquivos que poderiam ser acessado via URL são aqueles que estão dentro da pasta public, certo?

Só pra ver se eu entendi direito.

  1. Na minha máquina local eu uso o .env
  2. Quando eu for colocar minha aplicação no heroku por exemplo eu devo modificar o arquivo database.php diretamente.

É isso?

Oi Luan, verdade, não lembrei dessa questão da pasta public, você está certo. Há outras discussões que comentam esse ponto. Desde que o arquivo não esteja na pasta public ele pode ser usado sem problemas.

Contudo, eu particularmente, não acho uma boa ideia. Prefiro deixar no arquivo PHP, já que caso algum experto consiga acessar o arquivo diretamente (pelo navegador), não poderá ver nada.

Existe ainda uma outra recomendação de alguns desenvolvedores, que dizem que você também pode definir esses valores como variáveis de ambiente do seu servidor de aplicação, no caso, no Apache ou Xnignx.