variables d'environnement du shell à PHP
Hors ligneDoc_mathieu Le 06/11/2008 à 14:38 Profil de Doc_mathieu Configuration de Doc_mathieu

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 ?
Hors ligneKdecherf Le 06/11/2008 à 19:53 Profil de Kdecherf Configuration de Kdecherf

Bonjour,

= a écrit :
Fixe la valeur d'une variable d'environnement. Cette valeur n'existera que durant la vie du script courant, et l'environnement initial sera restauré lorsque le script sera terminé.


Voilà la définition de la fonction putenv. Donc tu dois passer par un fichier de variables que tu incluras dans tous tes scripts, c'est le plus logique à faire.
Hors ligneDoc_mathieu Le 07/11/2008 à 09:44 Profil de Doc_mathieu Configuration de Doc_mathieu

salut Kdecherf

Effectivement putenv n'était pas la solution, et le fait d'inclure un php contentant ces variables ne m'arrangeais pas.

Dans le fichier /etc/init.d/apache2, il y a une ligne interressante :

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

On y ajoute les variables dont on a besoin et hop elle s'inscrivent dans phpinfo() de manière permanente !!

Mon problème est donc réglé, merci pour ton aide

ps : pour mettre résolu ?
Hors ligneKdecherf Le 07/11/2008 à 13:03 Profil de Kdecherf Configuration de Kdecherf

C'est un énorme trou de sécurité.
Hors ligneDoc_mathieu Le 07/11/2008 à 15:03 Profil de Doc_mathieu Configuration de Doc_mathieu

Kdecherf a écrit :
C'est un énorme trou de sécurité.


J'en suis conscient, c'est une rustine qui ne devra pas rester
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels