Configurando variáveis ​​de ambiente para acessar em PHP ao usar Apache

104

Tenho um ambiente Linux e um aplicativo da Web em PHP que é executado condicionalmente com base em variáveis ​​de ambiente usando getenvem PHP. Preciso saber como essas variáveis ​​de ambiente precisam ser definidas para que o aplicativo funcione corretamente. Não tenho certeza de como configurar isso no Apache.

Além disso, preciso ser capaz de configurar variáveis ​​de ambiente separadas para cada domínio separadamente.

Por favor, conselhos sobre como posso conseguir isso.

Abishek
fonte

Respostas:

159

Algo nesse sentido:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>
inflamado
fonte
3
não estava em minha matriz $ _ENV, para recuperar o valor, consulte: stackoverflow.com/questions/2378871/…
i_a
Muito obrigado!
Omran Shagooj
4
@i_a você pode acessar o valor em PHP comgetenv('VARIABLE_NAME')
BeetleJuice
no xampp no ​​windows o arquivo será C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung
@i_a Na minha máquina, o valor também pode ser encontrado na $_SERVERvariável.
roubo de
28

Você também pode fazer isso em um arquivo .htaccess, supondo que eles estejam habilitados no site.

SetEnv KOHANA_ENV production

Seria tudo que você precisa adicionar a um .htaccess para adicionar a variável de ambiente

paquettg
fonte
isso é diferente de usar um arquivo .env, como o modo como o laravel faz isso? Isso o torna menos seguro? Eu pergunto isso porque estou construindo a mesma estrutura de backend com vários frameworks (laravel, express, django, etc.) e alguns desenvolvedores dessas outras linguagens dizem que não é apropriado usar .env e que a "configuração do servidor" deve ser usado em vez disso, ou através da linha de comando, estilo
heroku
8

Inacreditável, mas no httpd 2.2 no centos 6.4 funciona.

Exportar env vars em /etc/sysconfig/httpd

export mydocroot=/var/www/html

Então simplesmente faça isso ...

<VirtualHost *:80>
  DocumentRoot ${mydocroot}
</VirtualHost>

Então finalmente....

service httpd restart;
danday74
fonte
4

Se o seu servidor for Ubuntu e a versão do Apache for 2.4

Versão do servidor: Apache / 2.4.29 (Ubuntu)

Em seguida, você exporta as variáveis ​​no local "/ etc / apache2 / envvars".

Assim como a linha abaixo, você precisa adicionar uma linha extra em "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

Sachin Raghav
fonte