Définition des variables d'environnement pour l'accès en PHP lors de l'utilisation d'Apache

105

J'ai un environnement Linux et j'ai une application Web PHP qui s'exécute conditionnellement en fonction des variables d'environnement en utilisant getenvPHP. J'ai besoin de savoir comment ces variables d'environnement doivent être définies pour que l'application fonctionne correctement. Je ne sais pas comment configurer cela sur Apache.

De plus, je dois pouvoir configurer des variables d'environnement distinctes pour chaque domaine séparément.

S'il vous plaît des conseils sur la façon dont je peux y parvenir.

Abishek
la source

Réponses:

160

Quelque chose dans le sens:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>
wroniastie
la source
3
n'était pas dans mon tableau $ _ENV, pour récupérer la valeur, voir: stackoverflow.com/questions/2378871
...
Merci beaucoup!
Omran Shagooj
4
@i_a vous pouvez accéder à la valeur en PHP avecgetenv('VARIABLE_NAME')
BeetleJuice
dans xampp sous windows, le fichier sera C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung
@i_a Sur ma machine, la valeur peut également être trouvée dans la $_SERVERvariable.
robsch le
28

Vous pouvez également le faire dans un fichier .htaccess en supposant qu'ils sont activés sur le site Web.

SetEnv KOHANA_ENV production

Serait tout ce que vous devez ajouter à un .htaccess pour ajouter la variable d'environnement

paquettg
la source
est-ce différent de l'utilisation d'un fichier .env comme la façon dont laravel procède? Cela le rend-il moins sûr? Je pose cette question parce que je construis la même structure backend avec plusieurs frameworks (laravel, express, django, etc.) et certains développeurs de ces autres langages disent qu'il n'est pas approprié d'utiliser .env et que la "configuration du serveur" devrait être utilisé à la place, ou en le faisant via la ligne de commande, style
heroku
8

Incroyable, mais sur httpd 2.2 sur centos 6.4 cela fonctionne.

Exporter les variables d'environnement dans /etc/sysconfig/httpd

export mydocroot=/var/www/html

Alors faites simplement ceci ...

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

Puis finalement....

service httpd restart;
danday74
la source
4

Si votre serveur est Ubuntu et la version Apache est 2.4

Version du serveur: Apache / 2.4.29 (Ubuntu)

Ensuite, vous exportez les variables dans l'emplacement "/ etc / apache2 / envvars".

Tout comme cette ligne ci-dessous, vous devez ajouter une ligne supplémentaire dans "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

Sachin Raghav
la source