No sé cuál es el trato aquí ...sudo en php exec()
por lo que quiero ejecutar un AppleScript: sudo osascript myscript.scpt
Esto funciona bien en el terminal, pero no cuando se ejecuta a través de PHP exec()
; no pasa nada. La consola dice
no tty present and no askpass program specified ; TTY=unknown ; …
hice mi investigación, y parece que me falta la contraseña para el comando sudo
. He intentado un par de maneras diferentes de evitar esto, incluyendo:
- escribir
%admin ALL=(ALL) ALL
en/etc/sudoers
- y
proc_open()
en lugar deexec()
ninguno de los cuales parece estar funcionando, por lo tanto volviendo loco!
Entonces, básicamente, ¿hay una forma clara de que PHP ejecute un comando de terminal simple?
EDIT: para aclarar, myscript.scpt
es un AppleScript simple que cambia la interfaz de usuario en pantalla (para un proyecto más grande). En teoría, simplemente osascript myscript.scpt
debería ser suficiente, sin embargo, el sudo
es por alguna razón necesaria para invocar alguna respuesta del sistema. Si el sudo
pudiera eliminarse de alguna manera, no creo que tenga este problema de permisos.
Hay formas de solucionar esto, pero la mejor manera es hacer que 'myscript.script' se ejecute sin privilegios de root. – Stephen
Cualquier forma en que pueda hacer esto es técnicamente una mala idea. O le da acceso a PHP a sudo sin necesidad de una contraseña, o usa un script de ayuda setuid que siempre se ejecuta con privilegios de administrador. Ninguno de los dos está completamente cuerdo cuando se trata de una interfaz PHP. ¿Puede actualizar su pregunta para decirnos qué 'myscript.scpt' realmente está logrando? –
Pregunta actualizada – pop850