Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[Résolu] WiringPi et PHP
#1

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 Smile
Répondre
#2

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
Répondre
#3

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 Smile
Répondre
#4

Avec la commande 'type' tu dois avoir le path d'installation :
Code :
type gpio
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
Répondre
#5

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 ?
Répondre
#6

Je pense oui

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
Répondre
#7

J'ai donc tenté avec le path et ma commande est exécutée Big Grin
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"...
Répondre
#8

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
Répondre
#9

J'avais vu l'histoire des cotes inversées pour l'exécution de commandes. Et tout fonctionne nickel Smile
J'ai la bonne valeur en retour, merci beaucoup de ton aide Smile

Bonne journée !
Répondre
#10

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.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)