Configuración de variables de entorno para acceder en PHP cuando se usa Apache

104

Tengo un entorno Linux y tengo una aplicación web PHP que se ejecuta condicionalmente en función de las variables de entorno que se utilizan getenven PHP. Necesito saber cómo se deben configurar estas variables de entorno para que la aplicación funcione correctamente. No estoy seguro de cómo configurar esto en Apache.

Además, necesito poder configurar variables de entorno independientes para cada dominio por separado.

Por favor, consejos sobre cómo puedo lograrlo.

Abishek
fuente

Respuestas:

159

Algo parecido a esto:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>
agravio
fuente
3
no estaba en mi matriz $ _ENV, para recuperar el valor, consulte: stackoverflow.com/questions/2378871/…
i_a
¡Muchas gracias!
Omran Shagooj
4
@i_a puede acceder al valor en PHP congetenv('VARIABLE_NAME')
BeetleJuice
en xampp en Windows, el archivo será C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung
@i_a En mi máquina, el valor también se puede encontrar en la $_SERVERvariable.
robsch
28

También puede hacer esto en un archivo .htaccess suponiendo que estén habilitados en el sitio web.

SetEnv KOHANA_ENV production

Sería todo lo que necesita agregar a un .htaccess para agregar la variable de entorno

paquettg
fuente
¿Es esto diferente de usar un archivo .env como la forma en que laravel hace esto? ¿Esto lo hace menos seguro? Pregunto esto porque estoy construyendo la misma estructura de backend con múltiples marcos (laravel, express, django, etc.) y algunos desarrolladores de esos otros lenguajes dicen que no es apropiado usar .env y que la "configuración del servidor" debería ser usado en su lugar, o haciéndolo a través de la línea de comando, estilo
heroku
8

Increíble, pero en httpd 2.2 en centos 6.4 esto funciona.

Exportar variables env en /etc/sysconfig/httpd

export mydocroot=/var/www/html

Entonces simplemente haz esto ...

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

Entonces finalmente....

service httpd restart;
danday74
fuente
4

Si su servidor es Ubuntu y la versión de Apache es 2.4

Versión del servidor: Apache / 2.4.29 (Ubuntu)

Luego exporta las variables en la ubicación "/ etc / apache2 / envvars".

Al igual que en la siguiente línea, debe agregar una línea adicional en "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

Sachin Raghav
fuente