Je veux transmettre une variable d'environnement sous Linux à Apache au démarrage. p>
Exporter myvar = 5 - Je définis la variable de mon environnement sur la ligne de commande p>
passenv myvar -Sea Apache Pour importer la variable dans le fichier de configuration Apache P>
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 P>
echo $ _Server ['myvar'] - J'essaie d'accéder à la variable d'environnement dans PHP, mais elle n'est pas définie p>
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. p>
J'aimerais vraiment transmettre une variable d'environnement à Apache à la volée sans l'écrire dans un fichier. Aider beaucoup apprécié. p>
J'utilise Centos, PHP5 et Apache2. p>
merci. p>
mise à jour em> strong> 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. p>
3 Réponses :
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 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 ... P>
Certaines informations pertinentes pour Centos: http://php.dzone.com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0 P> export myvar = valeur code> 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. p>
Vous devez accéder aux variables d'environnement à l'aide du superglobal http://www.php.net/manual/fr /Reserved.variables.environment.php P>
Votre variable peut réellement être sous Selon http://www.php.net /manual/fr/Reserved.variables.environment.php#97105 p> $ _ env code>: p>
$ _ env ['myvar'] code> p>
$ _ serveur code> après le lien ci-dessous. Vaut la peine de vérifier
$ _ env code> cependant. P>
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"