Je ne sais pas ce que l'affaire est ici ...en php sudo exec()
Je veux exécuter un AppleScript: sudo osascript myscript.scpt
Cela fonctionne très bien dans le terminal, mais pas quand je l'exécuter via PHP exec()
; Rien ne se passe. La console dit
no tty present and no askpass program specified ; TTY=unknown ; …
Je l'ai fait mes recherches, et il semble que je manque le mot de passe pour la commande sudo
. J'ai essayé quelques différentes façons de contourner ce problème, y compris:
- écrit
%admin ALL=(ALL) ALL
dans/etc/sudoers
- et
proc_open()
au lieu deexec()
dont aucun ne semble fonctionner, par conséquent me rend fou!
Donc, fondamentalement, y a-t-il un moyen clair pour que PHP exécute une commande de terminal simple?
EDIT: pour clarifier, myscript.scpt
est un simple AppleScript qui modifie l'interface utilisateur à l'écran (pour un projet plus vaste). En théorie, simplement osascript myscript.scpt
devrait suffire, cependant le sudo
est pour une raison quelconque nécessaire d'appeler une réponse du système. Si le sudo
pouvait être éliminé, je ne pense pas que j'aurais ce problème de permissions.
Il existe des moyens de résoudre ce problème, mais le meilleur moyen est de faire exécuter myscript.script sans privilèges root. – Stephen
Tout ce que vous pouvez faire est techniquement une mauvaise idée. Vous pouvez donner un accès PHP à sudo sans avoir besoin de mot de passe, ou utiliser un script d'assistance setuid qui s'exécute toujours avec les privilèges root. Ni l'un ni l'autre n'est tout à fait raisonnable lorsqu'il s'agit d'un frontal PHP. Pouvez-vous mettre à jour votre question pour nous dire ce que myscript.scpt accomplit réellement? –
Question mise à jour – pop850