Como Definir Variáveis de Ambiente Para PHP no Apache?

Publicado 20 de janeiro de 2026

Problema: Definindo Variáveis de Ambiente PHP no Apache

Definir variáveis de ambiente para PHP no Apache pode ser difícil. Essas variáveis ajudam a configurar aplicações PHP e controlar como elas funcionam, mas configurá-las corretamente no Apache nem sempre é fácil.

Solução: Usando a Diretiva SetEnv na Configuração do Virtual Host do Apache

Configurando Variáveis de Ambiente no Apache

O Apache oferece a diretiva SetEnv para definir variáveis de ambiente para aplicações PHP. Esta diretiva permite que você defina variáveis personalizadas nos seus arquivos de configuração do Apache. A sintaxe básica é: SetEnv NOME_DA_VARIAVEL valor. Você pode usar esta diretiva para definir variáveis de ambiente necessárias pela sua aplicação PHP.

Dica: Protegendo Dados Sensíveis

Sempre use variáveis de ambiente para informações sensíveis como credenciais de banco de dados ou chaves de API. Esta prática mantém seus dados sensíveis fora do seu código-fonte, melhorando a segurança.

Configurando Variáveis de Ambiente Específicas por Domínio

O Apache usa blocos VirtualHost para gerenciar configurações de diferentes domínios. Esses blocos permitem que você configure ajustes específicos para cada site no seu servidor. Para configurar diferentes variáveis de ambiente para cada domínio, adicione as diretivas SetEnv dentro do bloco VirtualHost apropriado.

Aqui está um exemplo de configuração de variáveis de ambiente para dois domínios na sua configuração do Apache:

<VirtualHost *:80>
    ServerName example1.com
    DocumentRoot /var/www/example1
    SetEnv DB_HOST localhost
    SetEnv DB_NAME example1_db
</VirtualHost>

<VirtualHost *:80>
    ServerName example2.com
    DocumentRoot /var/www/example2
    SetEnv DB_HOST 192.168.1.100
    SetEnv DB_NAME example2_db
</VirtualHost>

Esta configuração define diferentes variáveis DB_HOST e DB_NAME para example1.com e example2.com. Sua aplicação PHP pode acessar essas variáveis usando a função getenv().

Exemplo: Acessando Variáveis de Ambiente no PHP

<?php
$dbHost = getenv('DB_HOST');
$dbName = getenv('DB_NAME');

$db = new PDO("mysql:host=$dbHost;dbname=$dbName", $username, $password);
?>

Guia Passo a Passo para Implementar Variáveis de Ambiente

Localizando e Editando Arquivos de Configuração do Apache

Para configurar variáveis de ambiente no Apache, você precisa encontrar e editar o arquivo de configuração. Na maioria dos sistemas Linux, o arquivo principal de configuração do Apache está em /etc/apache2/apache2.conf ou /etc/httpd/httpd.conf. Geralmente é melhor usar arquivos de configuração separados para cada virtual host.

Esses arquivos normalmente ficam em /etc/apache2/sites-available/ ou /etc/httpd/conf.d/. Procure por arquivos nomeados com o seu domínio ou com extensão .conf.

Para editar esses arquivos com segurança:

  1. Faça um backup do arquivo original:

    sudo cp /etc/apache2/sites-available/seu-site.conf /etc/apache2/sites-available/seu-site.conf.bak
  2. Abra o arquivo com um editor de texto usando sudo:

    sudo nano /etc/apache2/sites-available/seu-site.conf

Dica: Verifique as Permissões do Arquivo

Antes de editar arquivos de configuração do Apache, verifique suas permissões para ter certeza de que você tem os direitos de acesso necessários. Use o seguinte comando:

ls -l /etc/apache2/sites-available/seu-site.conf

Se você não tiver as permissões necessárias, pode precisar alterá-las usando o comando chmod.

Adicionando Variáveis de Ambiente aos Blocos VirtualHost

Para adicionar variáveis de ambiente, use a diretiva SetEnv dentro do bloco VirtualHost para o seu domínio. Aqui está a sintaxe básica:

<VirtualHost *:80>
    ServerName seudominio.com
    DocumentRoot /var/www/seudominio
    SetEnv NOME_DA_VARIAVEL valor
</VirtualHost>

Aqui estão alguns exemplos de configurações comuns de variáveis de ambiente:

  1. Detalhes de conexão com banco de dados:

    SetEnv DB_HOST localhost
    SetEnv DB_NAME meuapp_database
    SetEnv DB_USER meuapp_user
    SetEnv DB_PASS meuapp_password
  2. Modo da aplicação:

    SetEnv APP_ENV production
  3. Chaves de API:

    SetEnv API_KEY sua_chave_api_aqui
  4. Configurações personalizadas da aplicação:

    SetEnv CACHE_TIMEOUT 3600
    SetEnv DEBUG_MODE false

Adicione essas diretivas SetEnv dentro do bloco VirtualHost correto para cada domínio. Dessa forma, você pode ter diferentes variáveis de ambiente para diferentes domínios no mesmo servidor.

Verificando e Testando a Configuração de Variáveis de Ambiente

Reiniciando o Apache para Aplicar as Mudanças

Após configurar variáveis de ambiente na sua configuração do Apache, reinicie o serviço Apache para que as mudanças entrem em vigor. Use estes comandos para reiniciar o Apache:

Para sistemas Ubuntu/Debian:

sudo systemctl restart apache2

Para sistemas CentOS/RHEL:

sudo systemctl restart httpd

Antes de reiniciar, verifique se há erros de configuração:

sudo apache2ctl configtest

Se este comando retornar "Syntax OK", sua configuração está correta e você pode reiniciar.

Dica: Reinício Gracioso

Para minimizar o tempo de inatividade durante o processo de reinício, você pode usar um comando de reinício gracioso:

Para Ubuntu/Debian:

sudo systemctl reload apache2

Para CentOS/RHEL:

sudo systemctl reload httpd

Isso permite que o Apache termine de processar as requisições atuais antes de reiniciar, reduzindo o impacto nos usuários ativos.

Confirmando Variáveis de Ambiente no PHP

Para verificar se suas variáveis de ambiente estão configuradas corretamente, use funções PHP para verificar seus valores:

  1. Crie um arquivo PHP (por exemplo, env_test.php) no diretório raiz do seu site com este conteúdo:
<?php
phpinfo();
?>
  1. Acesse este arquivo através do seu navegador web. Procure pela seção "Environment" na saída. Suas variáveis personalizadas devem estar listadas lá.

  2. Para uma verificação específica, use a função getenv() em um script PHP:

<?php
echo "DB_HOST: " . getenv('DB_HOST') . "
"; echo "DB_NAME: " . getenv('DB_NAME') . "
"; ?>

Se você tiver problemas:

  1. Verifique os logs de erro do Apache (/var/log/apache2/error.log ou /var/log/httpd/error_log) para qualquer erro.

  2. Certifique-se de que as diretivas SetEnv estão no bloco VirtualHost correto.

  3. Verifique se o mod_env está habilitado no Apache:

    apache2ctl -M | grep env

    Se não estiver listado, habilite-o com:

    sudo a2enmod env
  4. Se estiver usando PHP-FPM, você pode precisar passar variáveis de ambiente de forma diferente. Considere usar SetEnvIf em vez de SetEnv.

Seguindo estes passos, você pode configurar, verificar e solucionar problemas com variáveis de ambiente para suas aplicações PHP no Apache.