Page 1 sur 1

Pour utiliser une variable dans un appel system()

Posté : 11 févr. 2011, 20:09
par fredmj
Bonjour à tous,

Ma remarque est simple, mais elle interessera peut-être quelques débutants comme moi. Un code php extrait, d'un fichier de configuration le chemin d'un executable. Le fichier se présente sous la forme suivante :

Code : Tout sélectionner

#~~~~~~~~~~~~~~// # config.cfg #~~~~~~~~~~~~~~°° CORE_DEV=/chemin/vers/binaire_de_dev.sh CORE_TEST=/chemin/vers/binaire_de_test.sh CORE_PRODUCTION=/chemin/vers/binaire_de_prod.sh [...]
Ensuite une routine fait appel à system() pour executer le binaire suivant que l'on souhaite executer le projet dans un environnement de dev, de test, ou de prod. Mais il est nécessaire d'utiliser trim() pour pouvoir tenir compte d'éventuels arguments en ligne de commande.
system("$CORE_DEV --argument=valeur"); // ne prend pas en compte les arguments car le Retour Chariot de la chaine $CORE_DEV coupe court à tout.
system(trim($CORE_DEV)." --argument=valeur"); // permet d'y remédier.
J'ai laissé une note sur le manuel de fr.php.net

Au fait, comment gérez-vous vos espaces de travail? Toute remarque est évidement la bienvenue.

A+
Fred.

Re: Pour utiliser une variable dans un appel system()

Posté : 11 févr. 2011, 23:37
par xTG
Intéressant, j'ai encore jamais eu à utiliser de commandes systèmes mais si j'avais eu l'occasion je me serais surement tiré les cheveux sur ce petit pépin. :p

Re: Pour utiliser une variable dans un appel system()

Posté : 12 févr. 2011, 03:50
par stealth35
je pense surtout que le probleme viens de la manière dont est extrait le fichier

Re: Pour utiliser une variable dans un appel system()

Posté : 12 févr. 2011, 17:31
par fredmj
je pense surtout que le probleme viens de la manière dont est extrait le fichier
Effectivement, j'utilisais d'abord quelques chose comme :

$CONFIGFILE = "./envirophp.cfg";
$DATACONFIG = file($CONFIGFILE);
foreach ($DATACONFIG as $line) {
$data = explode ('=',$line);
  switch ($data[0]) {
  case ROOT:
    $ROOT=$data[1];
  break;
  case ENVIRO_CORE:
    $ENVIRO_CORE=$data[1];
  break;
[...]
ce que j'ai remplacé par

$CONFIGFILE = "./envirophp.cfg";
$DATACONFIG = file($CONFIGFILE);
foreach ($DATACONFIG as $line) {
$data = explode ('=',$line);
  switch ($data[0]) {
  case ROOT:
    $ROOT=trim($data[1]);
  break;
  case ENVIRO_CORE:
    $ENVIRO_CORE=trim($data[1]);
  break;
[...]
Mais ce n'est, de mon point de vue, qu'une façon de déplacer le problème.
Il doit surement exister des solutions plus élégantes ...

Fred.

Re: Pour utiliser une variable dans un appel system()

Posté : 12 févr. 2011, 17:50
par xTG

Re: Pour utiliser une variable dans un appel system()

Posté : 12 févr. 2011, 17:53
par fredmj
Ah oui! Beaucoup plus jolie, plus puissant. :oops:
Merci pour le lien.

Fred.

PS : Et dire que je me voyais déjà implémenter une fonction xml.