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