9
votes

Variables d'environnement PHP et Apache

Je veux transmettre une variable d'environnement sous Linux à Apache au démarrage.

Exporter myvar = 5 - Je définis la variable de mon environnement sur la ligne de commande

passenv myvar -Sea Apache Pour importer la variable dans le fichier de configuration Apache

redémarrage Apachectl - Quand je redémarre Apache, je n'obtiens pas un message d'erreur. Cependant j'ai remarqué que si je ne crée pas la variable d'environnement dans ma première étape, je reçois un message d'avertissement, il doit donc fonctionner ici

echo $ _Server ['myvar'] - J'essaie d'accéder à la variable d'environnement dans PHP, mais elle n'est pas définie

J'ai observé que si j'essaie de passer à une variable d'environnement qui sort déjà (un que je n'ai pas créé moi-même) ça marche bien. La directive Setenv fonctionne également bien.

J'aimerais vraiment transmettre une variable d'environnement à Apache à la volée sans l'écrire dans un fichier. Aider beaucoup apprécié.

J'utilise Centos, PHP5 et Apache2.

merci.

mise à jour Il semble que la variable d'environnement est passée si j'invoque le démarrage Apache directement avec httpd et n'utilise pas Apachectl qui est un script shell. J'aurais pensé que "l'exportation" aurait exporté la variable du script shell non? Je ne suis pas un gourou Linux alors excuser mon manque de connaissances.


0 commentaires

3 Réponses :


12
votes

Si vous souhaitez que la variable d'environnement soit transmise à Apache, vous devez vous assurer que ladite variable d'environnement est définie pour l'environnement que Apache est exécutée. Pour ce faire, l'option la plus simple consiste à ajouter un export myvar = valeur ligne sur Envvée (doit être localisée dans / etc / apache2) ou le script qui démarre Apache (dans /etc/init.d) et ajoutez votre passenv myvar où il est recherché dans votre configuration Apache.

Redémarrer Apache doit s'assurer que la variable d'environnement MyVar est passée. Afaik, vous ne pourrez pas modifier la valeur de ce Var pendant que Apache est en cours d'exécution ...

Certaines informations pertinentes pour Centos: http://php.dzone.com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0


0 commentaires

3
votes

Vous devez accéder aux variables d'environnement à l'aide du superglobal $ _ env :

$ _ env ['myvar']

http://www.php.net/manual/fr /Reserved.variables.environment.php

mise à jour

Votre variable peut réellement être sous $ _ serveur après le lien ci-dessous. Vaut la peine de vérifier $ _ env cependant.

Selon http://www.php.net /manual/fr/Reserved.variables.environment.php#97105


0 commentaires

2
votes

se développer sur la réponse de Wimvds ci-dessus; Vous pouvez modifier les variables d'environnement pendant que Apache est en cours d'exécution avec le MODULE SETENVIF . Spécifiquement, la directive SetNevIF dudit module.

EG P>

SetEnvIf Request_URI "^.*\/foobar.*$" FOOBAR="something"


0 commentaires