Salut, apres 2h a regarder le net a ma solution je ne trouve rien qui fonctionne. apparemment un problème de droit simplement.
je cherche a executé une commande shell via php.
c’est pour un projet d’ecole.
la commande de base : exec(‹ sudo node-red start ›);
j’ai aussi tester exec(‹ sudo cp /var/www/html/ProjetJeanne/test.txt /var/www/html/ProjetJeanne/test2.txt >2&1 ›);
aucun des deux ne fonctionne.
echo exec(‹ pwd ›); me retourne bien /var/www/html/ProjetJeanne
echo exec(‹ whoami ›); me retourne www-data
j’ai donc fait sudo chown -R www-data /var/www/html/ProjetJeanne et sudo chmod -R 777 /var/www/html/ProjetJeanne
alors la c’est le pire, non seulement ca marche pas et en plus je ne peut meme plus modifier les fichiers avec mon utilisateur pi !
Bonjour
Je ne comprend pas pourquoi tu veux démarrer Node-red à partir de php. Node-red fonctionne en toile de fond tu le démarres une fois pour toute en démarrant le RPI.
Le php fonctionne avec l’identifiant www-data et donc n’a pas les droits sudo. Et il est extrêmement dangereux de donner les droits sudo au php.
Car le projet nodered recupere des informations en continue d’un automate exterieur qui simule une ligne de production.
je cree donc un site en php qui sert a lancer une production et a avoir le suivis d’une production.
le seul moyen de simuler la nouvelle production est de redémarrer nodered qui lui cree une nouvelle production et repart a zero.
le site fonctionne impeccable, la base de donnée aussi mais du coup je redémarre en manuel a chaque fois que je clic sur ‹ démarrer une production ›. dans le projet web tout dois etre automatique, il ne manque plus que ca a faire.
un node-red start au clic de ‹ demarer production ›, et un node-red stop au clic de ‹ arret de production ›.
pour les droit php se n’est pas trop grave puisqu’il n’y a que ca d’installer dessus, le serveur apache et nodered, aucun autre fichier.
apres si il y a une autre solution … pourquoi pas. j’ai bien testé de cree un bouton sur nodered qui coupe le flux de donnee mais ca ne fonctionne pas correctement.
et un script (ssh_restart.sh) avec les droits exécution pour tout le monde ( ou restreint à www-data ) avec dedans :
#! /usr/bin/expect -f
set force_conservative 1;
set timeout 2
spawn ssh pi@127.0.0.1
expect "Are you sure you want to continue connecting (yes/no)?"
send "yes\n"
expect "password: $"
send "password\n"
expect "pi@raspberrypi:~ $"
send "sudo systemctl restart nodered\n"
expect "pi@raspberrypi:~ $"
send "exit\n"
interact
ça évite de donner des droits au serveur il suffit d’installer « expect » … le ssh reste local, expect automatise la connection ssh …
dans ton cas le lancement de nodered par systemctl doit être aussi une possibilité
merci mais deja de base je ne peut pas executer le ssh_restart.sh donc ne reste non plus.
un petit chmod +x et un chmod 755 voir 777 mais rien n’a faire. par contre ca marche si je l’execute en ssh.
sudo visudo /etc/sudoers
ensuite pour les tests :
www-data ALL=(ALL) NOPASSWD:ALL
avec ca mes commandes fonctionne impeccable
c’est dangereux je sais, donc j’essaie de suite le site pour autoriser uniquement mes 2 commandes mais visudo me dit erreur.