我不知道这里的交易是什么……
所以我想运行一个applescript:sudo osascript myscript.scpt
这在终端中运行良好,但当我通过 PHP 的 exec()
执行它时却不行;什么都没发生。控制台说
no tty present and no askpass program specified ; TTY=unknown ; …
我进行了研究,似乎我缺少 sudo
命令的密码。我尝试了几种不同的方法来解决这个问题,包括:
- 在
/etc/sudoers
中写入 - 和
proc_open()
而不是exec()
%admin ALL=(ALL) ALL
似乎都没有工作,因此让我发疯!
所以基本上,有没有一种明确的方法可以让 PHP 执行一个简单的终端命令?
编辑:澄清一下,myscript.scpt
是一个简单的appleScript,它改变了屏幕UI(对于一个更大的项目)。理论上,简单的 osascript myscript.scpt
就足够了,但是出于某种原因,sudo
是从系统调用 some 响应所必需的。如果 sudo
可以以某种方式消除,我认为我不会遇到这个权限问题。
最佳答案
听起来您需要设置无密码 sudo。试试:
%admin ALL=(ALL) NOPASSWD: osascript myscript.scpt
如果存在以下行(通过 visudo 在/etc/sudoers 中),请同时注释掉:
Defaults requiretty
关于php - php exec() 中的 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173201/