2013-03-01 3 views
0

Je rencontre des problèmes pour exécuter un fichier sans saisir sudo avant celui-ci. Je pense que le problème est que les bibliothèques que j'ai utilisées exigent que vous soyez un superutilisateur.impossible d'exécuter le programme sans utiliser sudo

Je travaille sur un programme pour le Raspberry Pi et jusqu'ici tout a fonctionné très bien. Le programme prend un argument de ligne de commande et le sort sur un écran LCD 2x16 séparé. Donc, si je tape la commande suivante en tant que root ou si je place sudo devant le programme, le programme fonctionne comme prévu: ./serialTest Hello World.

Qu'est-ce que je travaille est maintenant obtenir la valeur d'une zone de texte sur une page Web PHP et de le soumettre au programme comme un argument de ligne de commande en utilisant la fonction exec() dans PHP Le problème est que je suis incapable de l'exécuter parce que à moins que je suis root j'ai essayé exec("sudo ./serialTest" . $textBox); mais il me dit encore Permission Denied

Après plus lu dans les bibliothèques que je utilise I cam à travers des instructions sur la façon d'exécuter la fonction serialOpen sans utiliser sudo ou être root J'ai ajouté l'utilisateur pi et www-data au groupe dialout j'ai veri fié avec id piid www-data. Le programme dit toujours Permission denied. Y at-il quelque chose que je pourrais regarder plus loin ou est-ce que je fais quelque chose de mal? J'ai inclus l'extrait de la page qui indique comment le faire fonctionner sans utiliser sudo ou d'être root

You can use it without sudo if you add yourself into the dialout group. either edit /etc/group, or use the usermod command. (and logout/login again) 
-Gordon 
+0

avez-vous redémarrer Apache après avoir effectué les changements de groupe? –

+0

Oui J'ai redémarré le Pi – Yamaha32088

+0

dix Je suggère d'utiliser 'strace' pour obtenir une capture de ce qui se passe en arrière-plan. par exemple. 'exec ('strace ./serialtest')'. strace affichera la pile syscall pour tout ce que fait l'application. à un moment donné, vous verrez d'où vient la permission refusée. –

Répondre

1

Cela dépend des droits de serveur fournis par le fournisseur de services de serveur. Si vous êtes le Service Prover, éditez les droits d'accès Shell à la commande Exec exécutée dans le fichier de configuration PHP. Par défaut, exec n'est pas fourni en défaut qui est la raison pour laquelle le message vient

Si vous n'êtes pas fournisseur de services puis les contacter pour faire des choses ..

Questions connexes