Pour utiliser une variable dans un appel system()

Eléphanteau du PHP | 14 Messages

11 févr. 2011, 20:09

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.
"Errare humanum est, perseverare diabolicum"

Avatar du membre
ViPHP
xTG
ViPHP | 7331 Messages

11 févr. 2011, 23:37

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

ViPHP
ViPHP | 5462 Messages

12 févr. 2011, 03:50

je pense surtout que le probleme viens de la manière dont est extrait le fichier

Eléphanteau du PHP | 14 Messages

12 févr. 2011, 17:31

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.
"Errare humanum est, perseverare diabolicum"

Avatar du membre
ViPHP
xTG
ViPHP | 7331 Messages

12 févr. 2011, 17:50


Eléphanteau du PHP | 14 Messages

12 févr. 2011, 17:53

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.
"Errare humanum est, perseverare diabolicum"