[PHP] - shell_exec
Posté : jeu. 26 mars 2015 16:46
Bonjour,
J'aimerais exécuter une commande shell via une page php.
Je "developpe" une interface pour générer des timelapses, le serveur apache/php tourne sur un raspberry pi.
Via un formulaire, je récupère les paramètres du timelapse en tant que variables puis je passe la commande.
Le formulaire brut de pomme: http://www.moreau-fr.net/tmp/timelapse/index.php
Je concatène ensuite la ligne de commande avec les variables, c'est fonctionnel.
Je stocke ma ligne de commande dans une variable "cmd"
Quand j'affiche le contenu, la syntaxe est correcte :
Le hic, c'est quand j'éssaie de passer la commande concaténée, soit $cmd via shell_exec.
Je me doute qu'il y a un problème de syntaxe.
En passant la commande non concaténée, donc sans utiliser $cmd, je n'arrive à rien non plus.
J'ai éssayé les syntaxes suivantes :
En revanche, si je fais un :
Cela fonctionne parfaitement, idem si je lance la commande via un script :
Voilà, je ne maitrise pas bien la syntaxe php, si quelqu'un "voit" le problème, je suis preneur.
Cordialement,
Laurent
J'aimerais exécuter une commande shell via une page php.
Je "developpe" une interface pour générer des timelapses, le serveur apache/php tourne sur un raspberry pi.
Via un formulaire, je récupère les paramètres du timelapse en tant que variables puis je passe la commande.
Le formulaire brut de pomme: http://www.moreau-fr.net/tmp/timelapse/index.php
Je concatène ensuite la ligne de commande avec les variables, c'est fonctionnel.
Je stocke ma ligne de commande dans une variable "cmd"
Code : Tout sélectionner
<?
$cmd = "sudo raspivid -t $t -tl $tl -o $o%0$d.jpg -w $w -h $h -q $q -ev $ev -co $co -br $br -sa $sa -ex $ex -awb $awb"
;?>
Code : Tout sélectionner
sudo raspivid -t 10000 -tl 1000 -o IMG_%04d.jpg -w 2592 -h 1944 -q 100 -ev 0 -co 0 -br 0 -sa 0 -ex auto -awb off
Je me doute qu'il y a un problème de syntaxe.
Code : Tout sélectionner
<?
$output = shell_exec('echo "$cmd"');
echo "<pre>$output</pre>";
?>
J'ai éssayé les syntaxes suivantes :
Code : Tout sélectionner
<?
//$output = shell_exec('sudo raspivid -t "'.$t.'" -tl "'.$tl.'" -o "'.$o.'" %0 "'.$d.'".jpg -w "'.$w.'" -h "'.$h.'"');
//$output = shell_exec('sudo raspivid -t '.$t.' -tl '.$tl.' -o '.$o.' %0 '.$d.'.jpg -w '.$w.' -h '.$h.'');
//$output = shell_exec('sudo raspivid -t "$t" -tl "$tl" -o "$o" %0 "$d".jpg -w "$w" -h "$h"');
//$output = shell_exec('sudo raspivid -t '.escapeshellarg($t).' -tl '.escapeshellarg($tl).' -o '.escapeshellarg($o).' %0 '.escapeshellarg($d).'.jpg -w '.escapeshellarg($w).' -h '.escapeshellarg($h).'');
echo "<pre>$output</pre>";
?>
Code : Tout sélectionner
<?
$ls = shell_exec('ls -la');
echo "<pre>$ls</pre>";
?>
Code : Tout sélectionner
<?php
//$output = shell_exec('sudo /home/pi/timelapse.sh');
//echo "<pre>$output</pre>";
?>
Cordialement,
Laurent