【发布时间】:2011-03-11 12:48:53
【问题描述】:
我不知道这里的交易是什么……
所以我想运行一个applescript:sudo osascript myscript.scpt
这在终端中可以正常工作,但是当我通过 PHP 的 exec() 执行它时就不行了;什么都没发生。控制台说
no tty present and no askpass program specified ; TTY=unknown ; …
我进行了研究,似乎我缺少sudo 命令的密码。我尝试了几种不同的方法来解决这个问题,包括:
- 将
%admin ALL=(ALL) ALL写入/etc/sudoers - 和
proc_open()而不是exec()
似乎都没有工作,因此让我发疯!
所以基本上,有没有一种明确的方法可以让 PHP 执行一个简单的终端命令?
编辑:澄清一下,myscript.scpt 是一个简单的 appleScript,它改变了屏幕 UI(对于更大的项目)。理论上,简单的osascript myscript.scpt 就足够了,但是出于某种原因,sudo 是从系统调用 some 响应所必需的。如果sudo 可以以某种方式消除,我认为我不会遇到这个权限问题。
【问题讨论】:
-
有办法解决这个问题,但最好的办法可能是让
myscript.script在没有root 权限的情况下运行。 -
从技术上讲,您可以采取的任何方式都是一个坏主意。您可以在不需要密码的情况下授予 PHP 对 sudo 的访问权限,或者使用始终以 root 权限运行的 setuid 帮助程序脚本。在处理 PHP 前端时,两者都不是很理智。您能否更新您的问题,告诉我们
myscript.scpt实际完成了什么?