Variables d'environnement du shell à PHP
Résolu
doc_mathieu
-
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
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 :
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 ?
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 ?
A voir également:
- Php variable d'environnement
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Vba range avec variable ✓ - Forum VB / VBA
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Php alert ✓ - Forum PHP
2 réponses
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:
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
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 ?
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 ?
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:
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
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
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