Variáveis de ambiente

Como ler variáveis de ambiente no CodeIgniter

O uso de variáveis de ambiente é bastante comum ao se colocar aplicações web em produção, pois elas evitam que seja necessário deixar informações importantes explícitas no código, como por exemplo:

  • chaves de acesso a APIs e outros serviços
  • informações de conexão com banco de dados

O CodeIgniter 3.x não possui capacidade nativa para leitura de variáveis de ambiente, mas existe uma biblioteca disponível no GitHub que permite adicionar essa funcionalidade ao CodeIgniter de maneira bem simples e rápida chamada phpdotenv.

A instalação dessa biblioteca é feita via Composer, facilitando ainda mais o processo.

Instalação

Após efetuar a instalação do CodeIgniter seja via Composer ou download convencional dos arquivos, vá até o terminal e acesse o diretório do projeto. Em seguida execute o comando abaixo para proceder com a instalação da biblioteca:


composer require vlucas/phpdotenv

 

Concluído o processo, você precisa se certificar de que a configuração para carga automática de bibliotecas instaladas via Composer esteja ativada. Para isso acesso o arquivo application/config/config.php e verifique se a chave ‘composer_autoload’ está definida conforme mostrado abaixo:


$config['composer_autoload'] = './vendor/autoload.php';

 

Configuração

Ainda no arquivo application/config/config.php localize a chave ‘enable_hooks’ e a defina como true, isso fará com que os hooks estejam ativados e então podemos criar o hook que irá liberar o acesso às leitura das variáveis de ambiente através da biblioteca que foi instalada.

Caso você não saiba o que são e pra que servem os hooks, clique aqui e veja um tutorial sobre eles.

Agora que você já ajustou as configurações, abra o arquivo application/config/hooks.php e adicione a ele o código abaixo. Esse código será o responsável por instanciar a biblioteca que foi instalada e liberar o acesso às variáveis de ambiente.


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$hook['pre_system'] = function() {
    $dotenv = new Dotenv\Dotenv(APPPATH);
    $dotenv->load();
};

Criando o arquivo .env

Para finalizar é hora de criar o arquivo que irá armazenar as variáveis de ambiente, esse arquivo deve estar localizado dentro do diretório applications e se chamar ‘.env’. O conteúdo desse arquivo é simplesmente a lista de variáveis de ambiente, que devem ser colocadas uma em cada linha. Veja abaixo um exemplo de um arquivo ‘.env’ com variáveis de ambiente usadas para definir as configurações de conexão com o banco de dados:


MYSQL_PORT=3306
MYSQL_HOST=localhost
MYSQL_DATABASE=database
MYSQL_USER=databaseuser
MYSQL_PASSWORD=databasepasw

Nesse arquivo ‘.env’ você pode colocar diversas variáveis de ambiente e acessá-las em qualquer lugar do código através de chamadas simples como:


$mysqlPort = getenv('MYSQL_PORT');
$mysqlPort = $_ENV['MYSQL_PORT'];
$mysqlPort = $_SERVER['MYSQL_PORT'];

Veja abaixo um exemplo real de uso das variáveis de ambiente, onde elas são recuperadas no arquivo application/config/database.php.


$db['default'] = array(
    'dsn'    => '',
    'hostname' => getenv('MYSQL_HOST'),
    'username' => getenv('MYSQL_USER'),
    'password' => getenv('MYSQL_PASSWORD'),
    'database' => getenv('MYSQL_DATABASE'),
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

Viu como é fácil e rápido configurar o CodeIgniter para utilizar variáveis de ambiente?

Aproveite esse conhecimento adquirido e dê mais segurança às suas aplicações.

Até a próxima!