Je ne sais pas ce qui se passe ici
Donc je veux lancer un applescript : sudo osascript myscript.scpt
Cela fonctionne bien dans le terminal, mais pas lorsque je l'exécute via la fonction PHP exec()
; rien ne se passe. La console dit
no tty present and no askpass program specified ; TTY=unknown ; …
J'ai fait mes recherches, et il semble qu'il me manque le mot de passe pour les sudo
commande. J'ai essayé plusieurs façons de contourner ce problème, notamment :
- écrire
%admin ALL=(ALL) ALL
sur/etc/sudoers
- et
proc_open()
au lieu deexec()
aucun d'entre eux ne semble fonctionner, ce qui me rend malade !
En fait, existe-t-il un moyen simple de faire en sorte que PHP exécute une simple commande en terminal ?
EDIT : pour clarifier, myscript.scpt
est un simple appleScript qui change l'interface utilisateur à l'écran (pour un projet plus important). En théorie, il suffit de osascript myscript.scpt
devrait suffire, mais l sudo
est pour une raison quelconque nécessaire pour invoquer un peu de réponse du système. Si le sudo
pourrait être éliminé d'une manière ou d'une autre, je ne pense pas que j'aurais ce problème de permissions.
5 votes
Il y a des moyens de résoudre ce problème, mais le meilleur moyen est probablement de faire
myscript.script
exécuté sans les privilèges de Root.6 votes
Toute façon de procéder est techniquement une mauvaise idée. Soit vous donnez à PHP l'accès à sudo sans avoir besoin d'un mot de passe, soit vous utilisez une aide setuid script qui s'exécute toujours avec les privilèges Root. Ni l'un ni l'autre n'est tout à fait sain d'esprit lorsqu'il s'agit d'un front-end PHP. Pouvez-vous mettre à jour votre question pour nous dire ce que
myscript.scpt
accomplit réellement ?