php exec() 中的 sudo

新手上路,请多包涵

我不知道这里的交易是什么……

所以我想运行一个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 出于某种原因需要从系统调用 一些 响应。如果 sudo 可以以某种方式消除,我认为我不会遇到这个权限问题。

原文由 pop850 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 897
1 个回答

听起来您需要设置无密码 sudo。尝试:

 %admin ALL=(ALL) NOPASSWD: osascript myscript.scpt

如果存在以下行(通过 visudo 在 /etc/sudoers 中),还要注释掉:

 Defaults    requiretty

原文由 tomit 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题