Question

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 en php. Comment puis-je faire ceci? J'ai essayé d'ajouter /etc/profile.d/foo.sh avec l'exportation FOO = / bar / baz avec root et de relancer apache.

Était-ce utile?

La solution

Les variables d'environnement sont héritées par les processus Unix. Les fichiers dans /etc/profile.d ne sont exécutés (dans le shell actuel, pas dans un sous-shell) lorsque vous vous connectez. Le simple fait de modifier la valeur à cet endroit, puis de redémarrer un processus ne met pas l'environnement à jour.

Solutions possibles:

  • déconnectez-vous / connectez-vous, puis démarrez apache
  • source le fichier: #. /etc/profile.d/foo.sh , puis redémarrez apache
  • source le fichier dans le script apache init

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 distribution que vous utilisez, car ils utilisent des schémas différents pour la configuration.

Autres conseils

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 distributions basées sur RPM) et les exporter (remarque: non testé).

Remarque: cela ne me surprendrait pas si certaines distributions essayaient assez difficilement de cacher autant que possible, en ce qui concerne la configuration du système, à un service accessible au public, tel Apache. Et s'ils ne le font pas, ils pourraient commencer à le faire dans une future version. Par conséquent, je vous conseille de le faire explicitement. Si vous avez besoin de partager un tel paramètre entre Apache et vos shells, vous pouvez essayer de sous-traiter /etc/profile.d/yourprofile.sh à partir de / etc / sysconfig / httpd

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

Ainsi, si votre serveur Web sert des pages de deux sites logiques, vous pouvez configurer la même variable d'environnement de manière différente pour chaque site et ainsi faire réagir votre PHP différemment.

Voir le Apache mod_env pour plus de détails:

Si vous avez besoin d’envars pour Apache uniquement, ce qui a fonctionné pour moi a été d’éditer le / etc / apache2 / envvars et de redémarrer Apache. J'ai ajouté ces paramètres:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top