[RESOLU] Execution de commande bash avec arguments

Petit nouveau ! | 8 Messages

26 juil. 2016, 15:17

Bonjour,

J'ai le logiciel PiFM installé sur un Raspberry PI et j'ai créé un script qui joue l'audio d'une vidéo youtube sur pifm. Je l'éxecute de la manière suivante :

Code : Tout sélectionner

./yt.sh [URL Youtube]
J'ai créé un formulaire ainsi qu'une page PHP pour que j'insère l'url dans une zone de texte via mon navigateur web et qui lance le script avec l'argument que j'ai entré (l'URL). Mais elle ne fonctionne pas.
Pouvez-vous me corriger ?
Merci d'avance !

formulaire.html :

Code : Tout sélectionner

<form action="fm.php" method="POST"> <label>URL Youtube</label> <input type="text" name="url"> <input type="submit" value="Valider"> </form>
fm.php :

Code : Tout sélectionner

<?php $url = $_POST["url"] exec('/home/pi/yt.sh "{$url}"'); echo "La chanson se joue."; ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 juil. 2016, 15:40

salut,

les variables ne sont pas interprétées dans des chaines de caractères délimitées par des simple quote.
Utilise la concaténation pour que cela fonctionne.
<?php
$url = $_POST["url"]
exec('/home/pi/yt.sh ",'.$url}.''');
echo "La chanson se joue.";

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

26 juil. 2016, 15:42

Ca ne fonctionne pas :/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 juil. 2016, 16:34

Ca ne fonctionne pas :/
ça va pas aider au diagnostique ça !

si tu a simplement copier coller ma réponse certain que cela ne fonctionne pas il y a une erreur de syntaxe. C'est facile à corriger php te l'indique.

si tu n'as pas de message d'erreur il faut activer l'affichage des erreurs (display_error = on) et configurer le niveau de rapport d'erreur por tout avoir : (error_reporting = E_ALL)

est ce que l'utilisateur qui exécute php a le droit d’exécuter ton fichier ?
<?php
exec('/home/pi/yt.sh ",'.$_POST["url"].'"');
echo "La chanson se joue.";
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

26 juil. 2016, 16:38

Mon fichier est en chmod 777 ( ca tourne en local donc pas grave).
Avec ton code et un ?> à la fin, php fm.php me retourne :

Code : Tout sélectionner

PHP Parse error: syntax error, unexpected 'exec' (T_STRING) in /var/www/html/fm.php on line 3
PS : Je suis un noob total en PHP

Petit nouveau ! | 8 Messages

26 juil. 2016, 16:52

Ca y est, ca fonctionne mais la page php ne se charge pas tant que l'émission FM est en cours...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juil. 2016, 09:05

ah oui c'est normal il attend le retour du script shell donc s'il ne rend pas la main ça attend.

tu peux rediriger la sortie du script avec un truc du genre : exec('/home/pi/yt.sh ",'.$_POST["url"].'" > /dev/null &')

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

29 juil. 2016, 14:30

Merci ! Tout foncrionne désormais !

Petit nouveau ! | 8 Messages

29 juil. 2016, 14:31

J'aurais une autre question, est-ce que ce serait possible de faire une page de recherche et de renvoyer l'url de la vidéo sélectionnée vers la page fm.php via _POST ?