variables d'environnement du shell à PHP

doc_mathieu
Invité n'ayant pas de compte PHPfrance

06 nov. 2008, 15:58

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 sarge 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=********");
putenv("MYSQL_SERVER=localhost");
putenv("MYSQL_PASSWD=*********");

$_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 ?

ViPHP
ViPHP | 4674 Messages

06 nov. 2008, 16:26

Hey :),

Attention aux multi-postages …

PHP ne tourne pas dans le Shell courant, donc, est-ce que tu as pensé à exporter ta variable ? Ceci ne se fait pas dans PHP, mais dans les configurations du Shell.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

doc_mathieu
Invité n'ayant pas de compte PHPfrance

06 nov. 2008, 17:02

salut HyWan et merci de ta reponse

Arf tu m'as démasqué, je voulais mettre un nom de sujet plus pertinent, je ne recommencerais pas promis.
PHP ne tourne pas dans le Shell courant, donc, est-ce que tu as pensé à exporter ta variable ? Ceci ne se fait pas dans PHP, mais dans les configurations du Shell.
Je ne pige pas bien la question.
si il est question de la commande export, je l'ai fait, mais ca ne fais rien puisque php ne considère pas cette nouvelle variable comme variable d'environnement php (d'ailleurs sur mon serveur fonctionnel la fonction export ne retourne pas les variables que je cherche et pourtant elles existent dans phpinfo)

Question maintenant php ne tourne pas dans le shell courant, ca veut dire quoi ?, je suis asser nouveau dans le merveilleux monde de debian alors ...

Encore une de question : le terme "configuration du shell" me plais bien, on peut configurer le shell ? comment fait-on une chose pareille ?[/quote]

ViPHP
ViPHP | 4674 Messages

06 nov. 2008, 17:30

J'ai essayé ceci :

Code : Tout sélectionner

$ TOTO="Hopla" $ php -a Interactive mode enabled <?php print_r($_ENV); // ne m'affiche pas TOTO. exit; $ export TOTO $ php -a Interactive mode enabled <?php print_r($_ENV); // m'affiche TOTO. exit; $ exit
On voit que si on exporte la variable $TOTO (dans le Shell), on la retrouve dans PHP. Pourquoi ? Parce que PHP ne tourne pas dans le Shell courant. Ça veut dire que quand on demande de démarrer PHP, il s'ouvre dans une nouvelle session Shell. La fonction export en Bash signifie que la variable $TOTO se retrouvera dans tous les sous Bash, donc a fortiori dans celui de PHP.

Maintenant, où placer ces exportations ? Naïvement, je dirais dans ~/.profile par exemple, mais c'est pas forcément top de ranger des variables liées aux applications Web dans ton home … Il faut voir pour lancer un autre fichier aux chargements de Bash, fichier que tu rangerais dans /var/www/ par exemple (tu dois avoir ça sous Debian me semble). Et il contiendrait ce que j'ai fait dès le début :

Code : Tout sélectionner

MYSQL_SERVER=localhost export MYSQL_SERVER …
C'est une façon de faire, il en existe plusieurs. À toi de choisir la bonne.

Ah oui au fait, c'est bof le mot de passe en environnement … Ce serait mieux écrit en dur dans PHP (ou dans un cache d'un YAML, INI, XML … en PHP). Sinon niveau sécurité c'est assez moche :P.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 nov. 2008, 18:38

Modération :
doc_mathieu, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.

Des réponses peuvent être apportées à cette adresse :
http://www.phpfrance.com/forums/viewtop ... ht=#268653

Je ne supprime pas puisque des réponses ont été apportées dans les deux sujets :evil:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute