Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Est-ce que c'est bon? pour exec

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Est-ce que c'est bon? pour exec

n°1405041
foxyfox
Posté le 11-07-2006 à 23:00:59  profilanswer
 

Bonjour je souhaiterais executer un programme a l'aide de cette ligne de commande:
/home/httpd/vhosts/server3.zefox.info/httpdocs/bin/sc_trans_root sc_trans_root.conf
 
Et dans mon script php j'ai:
exec('".$chemin."/bin/sc_trans_".$user." sc_trans_".$user.".conf');
 
chemin = /home/httpd/vhosts/server3.zefox.info/httpdocs
user = root
 
j'ai essayer de remplacer les ' par des " mais rien du tout.. merci de votre aide :]


Message édité par foxyfox le 11-07-2006 à 23:03:30
mood
Publicité
Posté le 11-07-2006 à 23:00:59  profilanswer
 

n°1405083
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 00:13:42  profilanswer
 

Pourquoi tu voulais qu'il se passe quoi?

n°1405344
foxyfox
Posté le 12-07-2006 à 11:19:40  profilanswer
 

Bah que sa execute, mais il ne se passe rien

n°1405363
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 11:28:34  profilanswer
 

Si tu t'attendais que ça ouvre un programme à l'ecran je ne pense pas que ça fonctionnera. Il l'affichera à Php mais pas à toi. C'est pas toi qui executer le programme mais php donc le programme répond à php. Si par contre le programme fait une tache interne tu pourras le voir que ça été executé de plus tu peux le vérifier dans la liste des processus s'il est présent.

n°1405403
foxyfox
Posté le 12-07-2006 à 11:51:11  profilanswer
 

Non je voulais dire que mes " ' étaient bon parce que il ne se passe rien quand je l'execute, il n'y a pas de PID au nom de sc_trans_root quand je fais ps aux sous le ssh.

n°1405432
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 12:08:00  profilanswer
 

normalement il doit voir quoi linux point de vue syntaxe ?  
Si c'est le guillement qui te gene pour l'implenter utilise la fonction chr(numero du caractère).  

n°1405440
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-07-2006 à 12:12:18  profilanswer
 

Code :
  1. exec('".$chemin."/bin/sc_trans_".$user." sc_trans_".$user.".conf')


s'nawak :D

Code :
  1. exec("$chemin/bin/sc_trans_$user sc_trans_$user.conf" )


zou on en parle plus!


Message édité par anapajari le 12-07-2006 à 12:12:33
n°1405452
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 12:21:05  profilanswer
 

mmhh mouais c'est pas très pro c'est une technique de vieux renard mais bon ça marchera.

n°1405453
foxyfox
Posté le 12-07-2006 à 12:21:34  profilanswer
 

C'est bon j'ai trouver la solution miracle ( enfin :p ).
  exec("".$chemin."sc_trans_".$user." ".$chemin."sc_trans_".$user.".conf" );

n°1405454
foxyfox
Posté le 12-07-2006 à 12:22:06  profilanswer
 

Ah une autre solution :D merci

mood
Publicité
Posté le 12-07-2006 à 12:22:06  profilanswer
 

n°1405456
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-07-2006 à 12:22:58  profilanswer
 

Berceker United a écrit :

mmhh mouais c'est pas très pro c'est une technique de vieux renard mais bon ça marchera.


Euh ... pourrais tu developper s'il te plait?
Tu compteras ces " et ' dans la commande qu'il passe a exec et tu te rendras compte que ces concaténations sont à l'ouet.
Maintenant en quoi ma technique est "pas pro" ou "de vieux renard", je suis assez curieux [:mlc][:mlc][:mlc]

n°1405471
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 12:33:32  profilanswer
 

anapajari a écrit :

Euh ... pourrais tu developper s'il te plait?
Tu compteras ces " et ' dans la commande qu'il passe a exec et tu te rendras compte que ces concaténations sont à l'ouet.
Maintenant en quoi ma technique est "pas pro" ou "de vieux renard", je suis assez curieux [:mlc][:mlc][:mlc]


Juste le $_user qui est present à l'intérieur de la chaine. c'est en ça que je disais que c'était pas pro. Ne le prend pas mal man  [:negueu]

n°1405474
foxyfox
Posté le 12-07-2006 à 12:36:12  profilanswer
 

Dite moi c'est possible de recuperer le numéro de PID du programme lors de l'execution svp?

n°1405506
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-07-2006 à 13:21:34  profilanswer
 

Berceker United a écrit :

Juste le $_user qui est present à l'intérieur de la chaine.


Et??? En quoi c'est pas pro je m'interroge toujours.
Si tu me sors que la ligne du dessous est plus "pro", je t'avertis d'avance que je vais me marrer...

Code :
  1. $str = $var1." ".$var2."\n";


 
 

Berceker United a écrit :

c'est en ça que je disais que c'était pas pro. Ne le prend pas mal man  [:negueu]


Je le prends pas mal je suis juste curieux :o
 

foxyfox a écrit :

Dite moi c'est possible de recuperer le numéro de PID du programme lors de l'execution svp?


Lire la doc, c'est marqué dans les commentaires http://fr.php.net/function.exec :

Code :
  1. $pid=exec("tacommande > /dev/null & echo \$!" );


n°1405512
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 13:30:55  profilanswer
 

anapajari a écrit :

Et??? En quoi c'est pas pro je m'interroge toujours.
Si tu me sors que la ligne du dessous est plus "pro", je t'avertis d'avance que je vais me marrer...

Code :
  1. $str = $var1." ".$var2."\n";




Non mais ça c'est d'la bombe de balle[:negueu].
 

Code :
  1. $str = $var1.chr(32).chr(32).$var2.chr(13);


n°1405521
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-07-2006 à 13:41:11  profilanswer
 

Berceker United a écrit :

Non mais ça c'est d'la bombe de balle[:negueu].

Code :
  1. $str = $var1.chr(32).chr(32).$var2.chr(13);



C'est marrant comme tu réponds toujours pas à ma question  [:roane]  
ça m'interesserait vraiment de savoir pourquoi c'est pas "pro", histoire que je sache pourquoi je ne dois plus faire comme ça
 

n°1405536
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 13:59:29  profilanswer
 

anapajari a écrit :

C'est marrant comme tu réponds toujours pas à ma question  [:roane]  
ça m'interesserait vraiment de savoir pourquoi c'est pas "pro", histoire que je sache pourquoi je ne dois plus faire comme ça


Plusieurs raison :

  • - C'est une question de lisibilité. Imagine que tu as une grosse chaine de caractère avec des variables à l'intérieurs. Ton éditeur va pas les isoler et pour toi tous un bloque sera concidéré comme étant un chaine non variable se qui est faux.  
  • - En terme performance (tres minim je l'avoue) il est préférable de jouer sur la concaténation car avec les guillemets php s'attend a ce qu'il y ait une variable et que c'est le cas il est obliger d'utiliser une mecanisme différent en gros il est fait l'équivalent d'un eval() dans la chaine.  
  • - C'est pas logique de taper ceci  
Code :
  1. $str = "Toto à une vache qui s'appelle $nom";

 
Une chaine c'est autre chose. Il est préférable de faire ceci :

Code :
  1. $str = 'Toto à une vache qui s'appelle '.$nom;


  • - Je prétend pas connaitre tous les languages mais de ce que je connais seul php accepte de faire ce genre de chose. Si jamais tu passes sur une autre language ça risque de te faire drole et tous naturelement tu vas coder de façon plus générique.


Voila  :D
 
un article sur ce sujet !

Message cité 1 fois
Message édité par Berceker United le 12-07-2006 à 14:02:21
n°1405588
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-07-2006 à 14:30:12  profilanswer
 

Berceker United a écrit :

Plusieurs raison :

  • - C'est une question de lisibilité. Imagine que tu as une grosse chaine de caractère avec des variables à l'intérieurs. Ton éditeur va pas les isoler et pour toi tous un bloque sera concidéré comme étant un chaine non variable se qui est faux.

Après en terme de lisibilité, pour moi c'est fonction de ce que tu as à écrire.
Prenons la phrase l'élélphant $x et l'écureuil $y s'adorent
Avec concaténation:

Code :
  1. $str = 'L\'éléphant'.$x.' et l\'ecureuil '.$y.' s\'adorent'


Avec "parse":

Code :
  1. $str = "L'éléphant $x et l'écureuil $y s'adorent";


Franchement laquelle est plus lisible.
Pour l'éditeur ça dépend lequel tu utilises [:spamafote] Vi vit ça très bien par exemple. Après c'est sur que sous notepad :o

Berceker United a écrit :

  • - En terme performance (tres minim je l'avoue) il est préférable de jouer sur la concaténation car avec les guillemets php s'attend a ce qu'il y ait une variable et que c'est le cas il est obliger d'utiliser une mecanisme différent en gros il est fait l'équivalent d'un eval() dans la chaine.

Ce n'est plus vrai depuis quelques temps déjà, la version php4.2 ayant nivellé la différence.
Tu vas me dire "oui mais regarde l'exemple sur les 3 millions de ligne dans l'article en bas", et je te répondrais "Le jour ou on te demande d'afficher 3 millions de ligne dans une page web, change de métier".
edit: tu trouveras 400 pages web disant un truc et son contraire sur ces benchmarks de toute façon
 

Berceker United a écrit :

  • - C'est pas logique de taper ceci  
Code :
  1. $str = "Toto à une vache qui s'appelle $nom";

 
Une chaine c'est autre chose. Il est préférable de faire ceci :

Code :
  1. $str = 'Toto à une vache qui s'appelle '.$nom;



Je ne vois pas où intervient la logique :)
C'est deux façons différentes d'écrire la même chose, après chacun ces gouts, si ce n'est que tu as oublié de backslasher le guillement de "s'appelle" et que du coup ça plante
 

Berceker United a écrit :

  • - Je prétend pas connaitre tous les languages mais de ce que je connais seul php accepte de faire ce genre de chose. Si jamais tu passes sur une autre language ça risque de te faire drole et tous naturelement tu vas coder de façon plus générique.

PHP étant le fils illégitime de PERL, ce comportement sur les chaines provient surement de la ( j'ai la flemme de vérifier ( afin je sais que c'est pareil en PERL) ). Chaque langage a effectivement ces spécificités.  
L'absence de typage des variables en php t'empêche d'avoir un code "générique", le fait de devoir concatener des chaines de caractères n'arrive que loin loin derrière.
 


Les exemples sont complètement foireux dans cet article...
Je les reprends "à ma sauce":

Code :
  1. $i='titre du lien';
  2. echo "<p><a href='#' class='test' onclick='rien();'>$i</a></p>";
  3. echo '<p><a href=\'#\' class=\'test\' onclick=\'rien();\'>'.$i.'</a></p>';


Et l'argument sur la "libisibité" est inversé [:spamafote]
 
Ma morale c'est que, les deux solutions sont possibles et sensiblement identiques en terme de performance. Autant choisir celle qui est le plus adaptée au besoin. Mais en aucun cas l'une ou l'autre n'est plus "pro" ou plus "vieux renard".
La vraie problématique c'est d'apprendre aux gens les différences entre ' et " ...


Message édité par anapajari le 12-07-2006 à 14:38:51
n°1405598
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 14:40:55  profilanswer
 

La derniere solution est totalement réglé a partir du moment ou les parametres sont identifié par des guillements. Personnellement, je n'aime pas travailler avec des variables présent dans une chaine de caractère car il faut rester logique, lisible. Comme je developpe sous plusieurs language je peux pas me permettre de laisser prendre cette voix. Franchement pour bien comprendre la problématique c'est de developper plusieurs language. Là ont abandonne très vite cette manière de faire.
Mais ceci reste que mon avis. Au boulot j'interdis qui que ce soit de faire ce genre de chose  (je contrôle les codes [:nico606])

n°1405751
soulmanto
Chat Noir replica
Posté le 12-07-2006 à 16:59:46  profilanswer
 

Y'a pas de bonne ou mauvaise solution absolue pour les quotes et simple quotes. PHP autorise les deux, alors utilisez la méthode qui vous plaît, et qui vous convient le mieux, stou! :o

n°1405791
omega2
Posté le 12-07-2006 à 17:41:48  profilanswer
 

anapajari a écrit :

Et??? En quoi c'est pas pro je m'interroge toujours.
Si tu me sors que la ligne du dessous est plus "pro", je t'avertis d'avance que je vais me marrer...

Personellement, j'aurais tendance à dire qu'utiliser une méthode qui plante dés que t'as besoin de coler un caractére alphabétique juste derriére le contenu de ta variable n'est pas une méthode trés pro. En plus de ça, il y a le probléme des variables tableau à plusieurs niveau qui seront mal interprété ainsi que les variables objects qui risquent de ne pas l'être du tout. (c'est vrai que je n'ai jamais poussé le vice jusqu'a faire appel à une propriété d'un objet directement dans une chaine entre " )
 
A noter qu'en général, pour faciliter la relecture du code sur des projets moyen ou gros, on essaye de faire la même chôse de la même maniére partout dans le code et donc on évite les solutions du style "d'habitude, je fais comme ceci, mais là et là et là et ..., je peux pas alors je fais autrement".

n°1405885
Berceker U​nited
PSN : berceker_united
Posté le 12-07-2006 à 20:05:22  profilanswer
 

soulmanto a écrit :

Y'a pas de bonne ou mauvaise solution absolue pour les quotes et simple quotes. PHP autorise les deux, alors utilisez la méthode qui vous plaît, et qui vous convient le mieux, stou! :o


Non, si tu travailles en équipe. Il faut pas pensé pour soi-même, dans ses habitudes mais en terme de groupe même si php autorise. Mais, je n'impose pas mon point de vue je dis pourquoi il est préférable de. Après, chacun lave son linge avec le savon qu'il veut :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Est-ce que c'est bon? pour exec

 

Sujets relatifs
problème commande exec sur wamp par rapport à easyphpfonction exec
Pb avec la commande exec[RESOLU] Recuperer des variables avec la commande exec()
Problème d' exec et scripts shellProblème avec exec(): lancement d'un processus
Probleme execMS/SQL : affichage infos sur exec procedure stockee
[JavaS] recuperer le type de navigateur et exec une fonction!i! RESOLU !i! fonction exec() attente fin du prog
Plus de sujets relatifs à : Est-ce que c'est bon? pour exec


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR