PHP+APache : problème pour lire les variables d'environnements

Le
Patrice OLIVER
Bonjour,

Sur Etch, j'utilise :
PHP 4.3.11
Apache 2.2.3-4

Dans /etc/profile, j'ai positionné une variable JAVA_HOME car j'en ai
besoin dans une appli. (puis reboot de la machine, au cas où je
sais, c'est un réflexe $soft).

En PHP, j'affiche les variable d'environnement PATH et JAVA_HOME.
Pour PATH, j'obtiens /usr/local/bin:/usr/bin:/bin
Cependant, dans /etc/profile, j'ai :
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr=
/lib/jvm/jdk1.5.0_11"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/jdk1.5.0_11"
fi

Pour JAVA_HOME, aucune valeur n'est retournée.

Voici le code exécuté :
echo '<br>JAVA_HOME: '.getEnv('JAVA_HOME');
echo '<br>PATH: '.getEnv('PATH');

A quoi correspond le PATH retourné ? J'avoue rester perplexe. Si vous
avez des suggestions, je suis preneur.

Merci,
Patrice.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stéphane L.
Le #9589121
Le 07/08/07, Patrice OLIVER
Bonjour,

A quoi correspond le PATH retourné ?




A celui de l'utilisateur qui fait tourner apache et donc php, peut-être ?
Daniel Caillibaud
Le #9589111
Patrice OLIVER a écrit :
A quoi correspond le PATH retourné ? J'avoue rester perplexe. Si vous
avez des suggestions, je suis preneur.



Au PATH du user apache utilisé.
Ce user n'utilise pas /etc/profile s'il ne tourne pas dans un shell interactif.

Cf man bash (rechercher "profile")

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands
from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is
started to inhibit this behavior.

When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if it exists.

When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these
files exist. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file
instead of /etc/bash.bashrc and ~/.bashrc.

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its
value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following command were
executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the file name.


etc...


et en français ça donne

Lorsque bash est lancé comme interpréteur de commandes de connexion interactif ou comme interpréteur non interactif avec l’option --login, il lit
et exécute tout d’abord les commandes se trouvant dans le fichier /etc/profile si ce fichier existe. Après lecture de ce fichier, il recherche
~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre, puis lit et exécute les commandes se trouvant dans le premier fichier existant et
accessible en lecture. L’option --noprofile peut être utilisée à l’appel de l’interpréteur pour empêcher ce comportement.

Lorsqu’un interpréteur de commandes de connexion termine, bash lit et exécute les commandes du fichier ~/.bash_logout, s’il existe.

Quand un interpréteur interactif démarre sans être un interpréteur de commandes de connexion, bash lit et exécute les commandes se trouvant dans
/etc/bash.bashrc et ~/.bashrc s’ils existent. Ce comportement peut être empêché à l’aide de l’option --norc. L’option --rcfile fichier forcera
bash à lire et exécuter les commandes dans fichier plutôt que dans /etc/bash.bashrc et ~/.bashrc.

Quand bash est démarré de façon non interactive, par exemple pour lancer un script, il consulte la variable BASH_ENV dans l’environnement,
développe son contenu si elle existe et considère cette valeur comme le nom d’un fichier à lire et exécuter. Bash se comporte comme si la commande
suivante était exécutée :
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
mais la valeur de la variable PATH n’est pas utilisée pour rechercher le fichier.

Si bash est appelé sous le nom sh, il essaye d’imiter le comportement de démarrage des versions historiques de sh aussi fidèlement que possible,
tout en restant conforme aux spécifications POSIX. Lorsqu’il est appelé comme interpréteur de commandes de connexion interactif ou non interactif
avec l’option --login, il essaye d’abord de lire et exécuter, dans cet ordre, les commandes de /etc/profile puis de ~/.profile. L’option --nopro‐
file peut être utilisée pour empêcher ce comportement. Quand il est appelé en tant qu’interpréteur interactif sous le nom sh, bash consulte la
variable ENV, développe sa valeur si elle est définie et utilise le résultat en tant que nom de fichier à lire et exécuter. Comme un interpréteur
appelé sous le nom sh n’essaye pas de lire et d’exécuter des commandes d’un quelconque autre fichier de démarrage, l’option --rcfile n’a aucun
effet. Un interpréteur non interactif appelé sous le nom sh n’essaie de lire aucun autre fichier d’initialisation. Quand il est appelé sous le nom
sh, bash entre en mode posix après avoir lu les fichiers d’initialisation.

Quand bash est appelé en mode posix comme avec l’option --posix sur la ligne de commande, il suit le standard POSIX pour les fichiers de démar‐
rage. Dans ce mode, les interpréteurs interactifs développent la variable ENV et les commandes sont lues et exécutées à partir du fichier dont le
nom est la valeur développée. Aucun autre fichier d’initialisation n’est lu.



--
Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Poster une réponse
Anonyme