réinitialiser la variable d’environnement système dans linux

Je veux juste que mon apache enregistre une partie de mon environnement prédéfini afin que je puisse le récupérer en utilisant la fonction getenv dans php. Comment puis-je faire ceci? J’ai essayé d’append /etc/profile.d/foo.sh avec export FOO = / bar / baz en utilisant root et apache redémarré.

Les variables d’environnement sont héritées par les processus sous Unix. Les fichiers dans /etc/profile.d ne sont exécutés (dans le shell en cours, pas dans un sous-shell) lorsque vous vous connectez. La simple modification de la valeur puis le redémarrage d’un processus ne met pas à jour l’environnement.

Correctifs possibles:

  • se déconnecter / se connecter, puis démarrer apache
  • source du fichier: # . /etc/profile.d/foo.sh # . /etc/profile.d/foo.sh , puis redémarrez apache
  • source le fichier dans le script d’initialisation apache

Vous devez également vous assurer que /etc/profile.d/ est généré lorsque Apache est démarré par init plutôt que par vous-même.

Le meilleur correctif peut également dépendre de la dissortingbution que vous utilisez, car ils utilisent des schémas de configuration différents.

Vous pouvez utiliser SetEnv dans vos fichiers de configuration (/etc/httpd/conf.d/*.conf, .htaccess …). De plus, vous devriez pouvoir les définir dans / etc / sysconfig / httpd (sur les dissortingbutions basées sur RPM) et les exporter (remarque: non testé).

Note: cela ne m’étonnerait pas si certaines dissortingbutions essayaient assez difficilement de se cacher autant que possible, en ce qui concerne la configuration du système, d’un service accessible publiquement tel qu’Apache. Et s’ils ne le font pas, ils pourraient commencer à le faire dans une future version. Je vous conseille donc de le faire explicitement. Si vous avez besoin de partager un tel paramètre entre Apache et vos shells, vous pouvez essayer de trouver /etc/profile.d/yourprofile.sh à partir de / etc / sysconfig / httpd

Les fichiers de configuration Apache vous permettent de définir des variables d’environnement par site.

Donc, si votre serveur Web sert des pages à partir de deux sites logiques, vous pouvez définir la même variable d’environnement différemment pour chaque site et obtenir ainsi une réaction différente de votre PHP.

Voir le mod_env Apache pour plus de détails:

Si vous avez besoin d’environnements uniquement pour Apache, ce qui a fonctionné pour moi a été de modifier le /etc/apache2/envvars et de redémarrer Apache. J’ai ajouté ces parameters:

 export LANG='en_US.UTF-8' export LC_ALL='en_US.UTF-8'