variable du shell dans php

Répondre
aziza
le 13/01/2014 à 11:13
aziza
bonjour,
j'ai une commande shell que j'appel dans du code php :
<?php cmd="$xx=find  /doc/rep".$cmp." -name '*'  $chn";
$command = escapeshellcmd($cmd);
shell_exec($command );
?>


mon problème c'est que php considére $xx comme variable php ,

lorsque je fait par exemple :
<?php echo "$xx=find  /doc/rep".$cmp." -name '*'  chn"; ?>


il m'affiche :
=find /doc/rep1 -name '*' chn

comment faire pour que php prenne le $xx comme partie de la chaine à exécuter et non pas comme variable php?
merci d'avance
LA GLOBULE
le 13/01/2014 à 15:17
LA GLOBULE
Il te faut utiliser des simples quote et non des double pour créer ta commande shell.
Avec des doubles, PHP interprète le contenu de la chaine de caractères.
LupusMic
le 14/01/2014 à 16:31
LupusMic
En effet, les simple quotes peuvent aider. Mais la commande est en elle-même erronnée: pour affecter une valeur à une variable shell, on n'utilise pas le $.

xx="quelque chose"


De plus, escapeshellcmd est mal employé. escapeshellcmd est censé être utilisé pour s'assurer qu'une variable injectée dans la chaîne fabriquée n'a pas d'effets de bords, et non pas pour traiter l'ensemble de la commande.

<?php $command = sprintf('find  /doc/rep%s -name \'*\'', escapeshellcmd($cmp));
$list = shell_exec($command );
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours