fonction exec et arguments

Petit nouveau ! | 9 Messages

25 mai 2010, 18:15

bonjour a tous,

je voudrais éxécuter un script shell depuis php et j'ai besoin de vos lumières
dans mon code php:

exec("sudo /root/scripts/ajout.sh ".$login.....);

je met 4 petits points car mon script attend un 2eme paramètre($dossier) mais je ne connais pas la syntaxe.

j'ai un script qui s'éxécute correctement avec un seul argument donc l'utilisateur apache possède les droits.

d'avance merci pour vos réponses

ViPHP
ViPHP | 5462 Messages

25 mai 2010, 18:17

comment tu ferais direct en ligne de commande ?

Petit nouveau ! | 9 Messages

25 mai 2010, 18:26

en ligne de commande je taperai:

./ajout.sh $login $dossier

ViPHP
ViPHP | 5462 Messages

25 mai 2010, 18:27

en ligne de commande je taperai:

./ajout.sh $login $dossier
qu'est ce qui te gène la dedans ?

Petit nouveau ! | 9 Messages

25 mai 2010, 18:33

pour un script avec une variable j'ai mis:

exec("sudo /root/scripts/ajout.sh ".$login);

ca c'est ok.

pour le deuxième argument je dois rajouter des cotes, un espace?

ViPHP
ViPHP | 5462 Messages

25 mai 2010, 19:32

ouai, ou comme t'es en double quote tu peux faire direct
exec("sudo /root/scripts/ajout.sh $login $dossier");

Petit nouveau ! | 9 Messages

26 mai 2010, 09:52

merci pour la rapidité de ta réponse stealth ca fonctionne :)
a+

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 mai 2010, 10:05

La solution de stealth35 fonctionne parfaitement.

Toutefois, en ce qui me concerne, quand il faut inclure des paramètre, je suis un fan du sprintf() :
// Je construit la commande en dehors, pour simplifier la lecture du code. 
// Le sprintf permet de décomposer la complexité de la ligne : d'un côté la commande brute, de l'autre, les variable qui permettent d'alimenter la commande
$exec_cmd = sprintf('sudo /root/scripts/ajout.sh %s %s', $login, $dossier);
// Execution de la commande
exec($exec_cmd);
PS : ah oui, n'oublie pas de cliquer sur le petit bouton vert sur le message de stealth35 qui t'a permis de résoudre ton soucis pour indiquer aux futurs visiteurs la réponse qui t'as aidée ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

26 mai 2010, 10:22

merci zeus,
je vais tester tout ca!