Variables d'environnement du shell à PHP

[Résolu/Fermé]
Signaler
-
Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021
-
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

Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021
418
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
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 ?
Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021
418 > doc_mathieu
apachectl, c'est le script que tu utilises pour lancer apache :-)

pour le trouver:
$ which apachectl

pour le lire dans un terminal:
$ less $(which apachectl)
>
Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021

heuuu ok je suis pas un champion alors voila :

pour apache j'utilise apache2 (/etc/init.d/apache2 start)

J'ai fais which apache2 et il me sort /usr/sbin/apache2 mais c'est un executable ....

du coup j'ai ouvert /etc/init.d/apache2 mais dans tout le code aucune trace de environment...

malheur....
Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021
418 > doc_mathieu
Ok , il fallait commencer par là...

Pour apache2, apachectl => apache2ctl (which apache2ctl)

Par defaut, c'est dans /usr/sbin/ et par defaut, il inclus un fichier qui est: /etc/apache2/envvars

Du coup, j'ai un doute, as-tu bien relancé apache2 après tes modification (stop puis start) as tu regarder les fichier profile, bashrc de l'utilisateur root? (si tu passe par /etc/init.d, ça doit être root qui le lance...)
>
Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021

salut asevere

alors j'ai jetté un oeil a /etc/apache2/envvars, il est vide mais c'est pas grave car tu m'as donné la solution juste avant.

dans le fichier de lancement apache2 (etc/init.d/apache2), j'ai trouvé cette ligne :

ENV='env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin'

Je n'ai eu qu'à ajouter mes variables dans cette ligne et voila.

J'aimerai mettre résolu mais je suis en anonyme c'est possible ?

merci bcp pour ton aide
Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021
418 > doc_mathieu
Cool,

J'aimerai mettre résolu mais je suis en anonyme c'est possible ?
Si tu as demander les réponse par mail, il me semble que oui, mais je viens de le faire à l'instant

merci bcp pour ton aide
De rien doc_mathieu

A plus