Comment pouvez-vous définir la PATH
variable d'environnement pour Apache2? J'ai essayé de le configurer dans /usr/sbin/envvars
et dans httpd.conf avec SetEnv PATH
(et de le transmettre à SSI avec PassEnv), mais cela ne se fait tout simplement pas.
apache-2.2
Matteo
la source
la source
Réponses:
Comme d'autres l'ont dit, vous le faites en utilisant le fichier de variables d'environnement. Je fournirai plus de détails dans cette réponse et prouverai que cela fonctionne.
Ce fichier de variable d'environnement doit provenir de
apachectl
. Sur ma boîte Ubuntu, ce fichier est à/etc/apache2/envvars
. Sur RedHat, c'est à/etc/sysconfig/httpd
. Sur FreeBSD, cela se fait/etc/rc.conf
(je pense). Comme alternative, vous pouvez également définir ces informations dans un script de démarrage (/etc/init.d/httpd
ouapachectl
, etc.). Cependant, je pense qu'il est préférable de laisser les scripts de démarrage seuls si possible. Le meilleur endroit est dans le script de variables d'environnement désigné.Vérifiez l'emplacement de ce fichier envvars. Sur Ubuntu,
/etc/init.d/apache2ctl
montre qu'il source/etc/apache2/envvars
:Pour afficher les variables, j'utilise un script Perl printenv.cgi et je l'ai rendu disponible sur http://example.org/cgi-bin/printenv.cgi . Le script me montre le CHEMIN suivant:
Pour modifier ces variables, je modifie le fichier envvars:
Modifiez votre CHEMIN dans ce fichier. Dans cet exemple, je vais ajouter
/opt/local/bin
à mon CHEMIN. Dans certains cas, vous devrez peut-être utiliserexport PATH
et pas seulementPATH
:Redémarrez apache
Consultez les résultats sur http://example.org/cgi-bin/printenv.cgi , qui montrent désormais que le PATH contient désormais un nouvel élément:
Si ce qui précède ne fonctionne pas, quelque chose d'inhabituel peut se produire. Peut-être que votre script ignore ou remplace le CHEMIN.
la source
graceful
, et cela n'a pas provoqué les modifications.http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv
la source
Sur mon système, c'est
/etc/apache2/envvars
.la source
PATH
Assurez-vous d'avoir chargé mod_env.
La syntaxe correcte est (exemple):
Cela a fonctionné pour moi.
la source
PATH
Vous pouvez le définir en
start()
fonction du script init, quelque chose comme ceci:Créez un script Perl pour répertorier toutes les variables d'environnement:
Placez-le dans
/var/www/cgi-bin
et vérifiezhttp://domain.com/cgi-bin/env.cgi
, vous verrez les belows:la source
Sur RedHat avec Apache 2.4.x compilé à partir de la source avec
--prefix=/usr --enable-layout=RedHat
le fichier envvars se trouve à/usr/sbin/envvars
. Je peux confirmer que la définition du PATH approprié dans ce fichier permet à Apache et PHP de le savoir.J'ai utilisé la même approche que Stefan Lasiewski pour le déterminer. Pour Apache 2.4.12 , le
/usr/sbin/envvars
fichier provient de la ligne 49 de/usr/sbin/apachectl
.la source
/usr/sbin/apachectl
mentionne à la/etc/sysconfig/httpd
place, qui contient: «Ce fichier n'est plus utilisé pour configurer des variables d'environnement supplémentaires pour le processus httpd. Il a été remplacé par systemd. » paste.debian.net/361218Modifiez le fichier plist Apache2 avec l'éditeur que vous voulez (exemple en utilisant vim):
Ajoutez ce qui suit au fichier plist:
Si la
EnvironmentVariables
clé existe déjà, ajoutez simplementà la
<dict>
NB: Pour Mac OSX 10.11 (EL Capitan) ou supérieur, vous devez exécuter la commande
csrutil disable
dans Terminal après avoir redémarré et appuyé sur CMD + R, puis vous pourrez modifier ce fichier.Redémarrez Apache2
la source
Sur mon système Apache2, j'ai constaté que beaucoup de visiteurs voulaient seulement piller ma collection soigneusement compilée de Smileys / émoticônes (sérieusement!), J'ai donc décidé d'utiliser un lien symbolique généré aléatoirement vers le chemin du répertoire qui serait ramassé comme un Variable Apache2, et il était pratiquement impossible de partager des liens.
Ainsi, toutes les 30 minutes, cron a exécuté un script perl qui réécrirait le fichier .htaccess et inclurait un SetEnv comme vous pouvez le voir ci-dessous:
Ensuite, en haut de mes pages PHP, j'avais lu la variable comme ça, et plus tard dans la page, il y aurait cette variable utilisée pour construire un chemin vers le smiley approprié:
Fonctionne pour moi et j'espère que cela vous aide!
la source
PATH