Variables d'environnement du shell à PHP

Résolu/Fermé
doc_mathieu - 6 nov. 2008 à 14:15
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 - 7 nov. 2008 à 09:29
Bonjour a tous

J'ai un gros problème et je suis incapable de le résoudre depuis deux jours :

J'ai deux serveurs, un debian sarges et un debian etch.

Le sarge fonctionne correctement
Dans mon phpinfo() j'ai les 3 variables d'environnement suivantes :

_ENV["MYSQL_USER"]
_ENV["MYSQL_SERVER"]
_ENV["MYSQL_PASSWD"]

Sur le etch, je n'ai pas ces variables d'environnement.
J'ai donc essayé de les créer (^m si c'est de la bidouille) avec ce script :

putenv("GETRANET_DEBUG=1");
putenv("MYSQL_USER=getraclient");
putenv("MYSQL_SERVER=localhost");
putenv("MYSQL_PASSWD=(so:dw!x-fp!:e");

$_ENV['GETRANET_DEBUG']=getenv('GETRANET_DEBUG');
$_ENV['MYSQL_USER']=getenv('MYSQL_USER');
$_ENV['MYSQL_SERVER']=getenv('MYSQL_SERVER');
$_ENV['MYSQL_PASSWD']=getenv('MYSQL_PASSWD');


Du coup mon phpinfo() m'indique les 3 variables super ! Sauf que des que le script se termine les variables disparaissent, elles ne sont pas permanentes.

Je ne comprends pas, pour l'installation du serveur sarge je n'ai pas eu de prob, je pense que ces 3 variables ont été installées directement. Il semble que soit etch fonctionne différemment soit il faut installer un module que je ne connais pas.

Actuellement voici ce que j'ai d'installé :

- Libapache2-mod-php4
- Php4-cgi
- Php4-cli
- Php4-common
- Php4-mysql


Les variables d'environnement php sont faites à partir des informations prises dans les variables d'environnement du shell. Le problème c'est que je ne trouve rien avec "set". Je voudrais trouver un moyen de rendre ces variables permanentes.
Je suis sur qu'il est possible d'ajouter des variables d'environnement dans la configuration de PHP mais je ne sais pas comment faire.

Avez-vous des idées pour me sortir de ce bourbier ?

2 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
6 nov. 2008 à 14:46
Bonjour,

Tout me parait normal...

Les deux distrib doivent bien fonctionner, mais les variables $_ENV sont, comme leurs nom l'indique, des variables d'environnement, ce qui veut dire qu'elles étaient dans l'environnement de l'utilisateur qui a lancé apache quand il a lancé apache :-)

Pour rajouter une variable:
$ export MA_VAR=valeur
$ apachectl stop
$ apachectl start


Ce qui doit différer entre les deux distrib, c'est le profil de l'utilisateur qui lance le serveur apache (fichier /etc/profile, ~/.profile ~/.bashrc, etc.)

A plus
0
Bonjour et merci de te pencher sur mon problème

le truc c'est que

$ export MA_VAR=valeur
$ apachectl stop
$ apachectl start

ne fonctionne pas puisque php ne considère pas cette variable comme une variable d'environnement php.
J'y ai bien accès depuis le shell : echo $MA_VAR retourne bien valeur mais dans mon php, avec phpinfo() je n'ai pas accès à la variable.

(avec un "export" depuis le serveur fonctionnel je n'ai pas de trace de MYSQL_USER ou MYSQL_SERVER)

Sinon j'ai regardé /etc/profile, ~/.profile ~/.bashrc sur les deux serveurs tout est identique

et apache a été redémarré depuis root sur les deux...

qu'en dis-tu ?
0
As tu vérifié le contenu du fichier /etc/envorinment ?
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
6 nov. 2008 à 15:31
Alors... il faut regarder dans la conf php:

Si safe_mode est à on, les seule variable qui seront passées sont celles dont le nom est préfixé par PHP_
ex:
$ export PHP_MAVAR
$ apachectl stop
$ apachectl start
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
6 nov. 2008 à 15:35
Sinon, dans la même veine que ce que dit doglen, dans le script apachectl (which apachectl)

Tu as en début de script normalement, un fichier qui est recherché pour les variable d'environnement:

Chez moi:
# pick up any necessary environment variables
if test -f /usr/local/environments/env_01/httpd/bin/envvars; then
  . /usr/local/environments/env_01/httpd/bin/envvars
fi
0
doc_mathieu > asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022
6 nov. 2008 à 15:41
merci a vous deux pour votre aide

Doglen, j'ai regardé /etc/environement, c'est les même sur les deux serveurs, ils ne contiennent que la variable LANG (mais je vais essayer d'ajouter d'autre variables)

asevere, safe_mode est à OFF …sinon je regarde pour le script apachectl (je ne voi pas du tout ce que c'est) je vous tiens au courant
0
doc_mathieu > asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022
6 nov. 2008 à 15:49
Heuuu je suis pas un habitué de apache/php, c'est quoi ce apachectl stp ??
0