Messages : 11
Sujets : 2
Inscription : Aug 2014
Salut a tous!
Je tente depuis un bon moment de controller les GPIO par PHP afin de créer ma propre interface web pour mon Pi.
J'ai fait le tour de google, et chaque fois, je tombe sur des réponses différentes d'un topic a l'autre..
D'après ce topic:
http://www.raspberrypi.org/forums/viewto...65&t=38621, l'utilisation de system() arrangerais les choses. Mais non.
Voici mon bout de code:
Code :
$cmd = system("gpio write 0 1", $ret);
print_r("<pre>" . $ret . "</pre>");
J'ai comme retour "127".
Infos sur le fichier:
Code :
-r-xr-xr-x 1 www-data www-data 88 Aug 25 17:01 gpio.php
J'ai également suivi ce tuto:
http://www.instructables.com/id/Simple-a...-with-PHP/
qui n'apporte pas grand chose a part expliquer les différences entre exec, et system (j'ai testé les deux)
Et au final, le GPIO ne passe pas en "1"
Merci de votre aide
(Modification du message : 26-08-2014, 18:51:01 par
doddo.)
Messages : 1,410
Sujets : 49
Inscription : Jun 2013
Salut,
Il faut mettre le path complet du programme gpio pour l'exécuter. Et s'assurer que le serveur web a bien les droits d'executer le programme, surtout en dehors du root du site (chroot sur Apache par exemple qui est activé par défaut il me semble).
Raspberry Pi Home Server :
http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi:
Kupiki Hotspot
Messages : 11
Sujets : 2
Inscription : Aug 2014
Salut,
Le path complet de WiringPi est "~/wiringPi", comment l'ajouter a la commande? J'ai en retour "Is a directory" ><
Au niveau du serveur WEB, j'utilise Lighttpd. Dans le fichier .conf, l'utilisateur est "www-data", et le propriétaire de gpio.php est "www-data" (idem pour le groupe). J'ai sauté une étape ?
Merci
(Modification du message : 26-08-2014, 10:20:23 par
doddo.)
Messages : 1,410
Sujets : 49
Inscription : Jun 2013
Avec la commande 'type' tu dois avoir le path d'installation :
Tu dois mettre ensuite /path/to/gpio param1 param2
Sinon pour l'execution, ca n'est pas un problème de droit utilisateur mais d'autorisation pour le service PHP a exécuter des commandes systèmes en dehors de la racine de ton site web. Imagine que tu as un site où je peux déposer un fichier PHP dans lequel je peux lancer n'importe quelle commande ...
Pour Lighttpd je ne connais pas il faut regarder s'il n'y a pas un "safe mode" qui serait activé.
Raspberry Pi Home Server :
http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi:
Kupiki Hotspot
Messages : 11
Sujets : 2
Inscription : Aug 2014
Merci de ton aide,
J'ai oublié de préciser que les commandes telles que "ls" et "whoami" fonctionnent nickel.
Si ces commandes passent, ca veut dire que le safe mode est désactivé non ?
Messages : 1,410
Sujets : 49
Inscription : Jun 2013
Je pense oui
Raspberry Pi Home Server :
http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi:
Kupiki Hotspot
Messages : 11
Sujets : 2
Inscription : Aug 2014
J'ai donc tenté avec le path et ma commande est exécutée

Mais la valeur de retour n'a rien avoir avec ce que la console retourne réellement...
Exemple:
Code :
[== PHP ==]
system("/usr/local/bin/gpio write 0 1", $ret);
print_r($ret");
Affiche "0"...
(Modification du message : 26-08-2014, 13:14:56 par
doddo.)
Messages : 1,410
Sujets : 49
Inscription : Jun 2013
Ce que tu affiches c'est le code retour de l'execution de ta commande. 0 c'est que ca s'est bien passé.
Par contre la commande system retourne la derniere chaine de caractere affichée à l'ecran. C'est plutot elle qu'il te faut non ?
Si tu veux ce qui est affiché par la commande tu peux utiliser les cotes inverses (je trouve pas le caractère sur mon ipad)
$out = 'ls -la'
Et $out contient le resultat de la commande
Raspberry Pi Home Server :
http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi:
Kupiki Hotspot
Messages : 11
Sujets : 2
Inscription : Aug 2014
J'avais vu l'histoire des cotes inversées pour l'exécution de commandes. Et tout fonctionne nickel
J'ai la bonne valeur en retour, merci beaucoup de ton aide
Bonne journée !
Messages : 1,023
Sujets : 22
Inscription : Jun 2013
doddo a écrit :D'après ce topic: http://www.raspberrypi.org/forums/viewto...65&t=38621, l'utilisation de system() arrangerais les choses. Mais non.
Pour ma part, on m'a toujours déconseillé d'utiliser system, mais passthru plutôt.