PHP - Isolando valores sensíveis de configuração


Existem alguns valores que não devem ser colocados diretamente no código-fonte de um projeto, pois eles são sensíveis e, portanto, ficarão expostos se colocados diretamente do código. Exemplos desses valores são os tokens para consumo de API’s e credenciais para o banco de dados.

No PHP existe uma biblioteca chamada DotEnv, ela lê um arquivo chamado .env e adicionar os valores definidos nesse arquivo em variáveis de ambiente do PHP. Para instalá-la via Composer basta rodar o seguinte comando:


composer require vlucas/phpdotenv

Após a instalação, é necessário criar e executar o objeto que irá fazer o trabalho, lembrando que é preciso passar o diretório onde o arquivo .env está armazenado. Segue o código:


$dotenv = \DotEnv\DotEnv::create(__DIR__);
$dotenv->load();

Como é possível perceber, o uso da biblioteca é bastante simples, além disso, o isolamento do código e dos valores de configuração torna desnecessário a mudança de valores ao trocar o ambiente de desenvolvimento para o de produção. Basta que o arquivo .env esteja com os valores certos no ambiente de produção.

Para obter os valores adicionados no código PHP, é possível utilizar as variáveis superglobais $_ENV e $_SERVER ou, então, utilizar a função getenv para fazer isso.

Atualização da biblioteca

A partir da versão 4.* a API da biblioteca mudou, com isso o exemplo desse post serve apenas para a versão 3. Na versão 4 o código para carregar as variáveis de ambiente é o seguinte:

$dotenv = \Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

Basicamente, o método que é uma factory para criar o objeto mudou na versão 4.


ver todos os posts
Publicado em 9/09/2019