variables d'environnement php innaccessibles

doc_mathieu
Invité n'ayant pas de compte PHPfrance

04 nov. 2008, 13:22

Bonjour

Mon serveur est sous debian
J'accède comme ca : https://(...)/test.php

<?
        echo "1- ".$_ENV['MYSQL_SERVER'];
        echo "2- ".$_ENV['MYSQL_USER'];
        echo "3- ".$_ENV['MYSQL_PASSWD'];
?>

Réponse : "1- 2- 3- "

J'en déduis qu'une configuration quelque part permet d'activer les variables d'environnement PHP mais impossible de mettre la main dessus.

avez-vous une idée ?

Mammouth du PHP | 693 Messages

04 nov. 2008, 14:07

Je dirais plutot que ce sont les variables $_ENV['MYSQL_SERVER'],$_ENV['MYSQL_USER'] et $_ENV['MYSQL_PASSWD'] qui ne sont pas définies. Chez moi, quand je fais print_r($_ENV), j'obtiens juste des informations sur l'ordinateur sur lequel PHP tourne.

Il me semble qu'il est possible de définir des variables, par des lignes de commande. Mais bon, je suis pas un expert la dedans.

doc_mathieu
Invité n'ayant pas de compte PHPfrance

04 nov. 2008, 15:55

Merci orgerix d'avoir répondu.

Oui effectivement ces variables ne sont pas définies et j'aimerais qu'elles le soient. Ce sont des variables d'environnement qui effectivement donnent des informations sur le serveur.

Je suppose qu'une option dans php.ini doit être à l'origine du problème mais je n'ai toujours pas de piste.

Je galere ...

Mammouth du PHP | 693 Messages

04 nov. 2008, 17:15

Non, c'est pas au niveau du php.ini qu'il faut agir, il faut créer ces variables via le shell. Je sais pas trop comment on fait sur Linux, mais ca doit pouvoir être possible.

Invité
Invité n'ayant pas de compte PHPfrance

04 nov. 2008, 17:26

Le truc c que j'ai deux machines sous debian, l'une interprète correctement le php l'autre non, et les deux ont les mêmes variables globales (affichées avec "set")
Donc je ne pense pas que ça vienne de la

mais merci de ton aide, d'autres suggestions ?

doc_mathieu
Invité n'ayant pas de compte PHPfrance

05 nov. 2008, 11:15

bon alors voila ya du neuf :

Le truc c'est que j'ai deux serveurs.
1) L'un marche et interprete correctement
2) L'autre non

voila le php pour les deux machines

echo "<pre>";
print_r($_ENV);
echo "</pre>";

réponse du 1)

Array
(
[GETRANET_DEBUG] => 1
[LC_ALL] => fr_FR.ISO-8859-1
[PATH] => /usr/local/bin:/usr/bin:/bin
[PWD] => /
[LANG] => fr_FR.ISO-8859-1
[SHLVL] => 1
[MYSQL_USER] => *******
[MYSQL_SERVER] => localhost
[MYSQL_PASSWD] => *******
[_] => /usr/sbin/apache2
)

Reponse du 2)

Array
(
[PATH] => /usr/local/bin:/usr/bin:/bin
[PWD] => /
[LANG] => C
[SHLVL] => 1
[_] => /usr/sbin/apache2
)

comment puis-je renseigner les variables
[MYSQL_USER]
[MYSQL_SERVER]
[MYSQL_PASSWD]
sur le 2) depuis mon shell ?

Mammouth du PHP | 693 Messages

05 nov. 2008, 14:26

Tu n'as rien installé sur le serveur 1 ?

Sinon, je crois que la commande pour créer les variables d'environnement est set nomvariable=valeur

Mais bon, je suis pas sur non plus.

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2008, 15:56

ouaip c bien ca effectivement mais toutes les variables du shell ne passent pas en variable d'environnement php.

Je vais réouvrir un sujet avec plus d'explications

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2008, 10:47

Multiposte :
Autre réponse donné ici
http://www.phpfrance.com/forums/voir_sujet-244198.php

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

doc_mathieu
Invité n'ayant pas de compte PHPfrance

07 nov. 2008, 11:12

sakut HyWaN

Merci d'avoir pris tout ce tps pour me sortir de la galere.

alors voila déjà de mon coté php -a ne marche pas, pas top.

après j'ai fait des export de variables et je ne les retrouve pas dans le phpinfo() donc inaccessible depuis les php.

En revanche a force de remplir les forum, j'ai fini par trouver une solution :

le fichier /etc/init.d/apache2 contient cette ligne :

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

J'ai ajouter mes variables et hop, j'y ai accès depuis phpinfo, alors qu'elles ne sont pas affichées quand je fais un "export" ou un "set"

Bref l'essentiel c'est que ça marche, par contre oui tu as tout a fais raison sur la sécurité c'est carrément pas top

merci également a tous les autres participants

doc_mathieu
Invité n'ayant pas de compte PHPfrance

07 nov. 2008, 11:26

c'est résolu mais je ne sais pas comment le mettre, je tente en ajoutant un sujet a la reponse...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2008, 12:59

l'anti-spam qui empêche de reposter avant un certain laps de temps... :-k

Devrait être bon maintenant.
Marci

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