php - php exec() 中的 sudo

标签 php linux sudo

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

所以我想运行一个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

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

Defaults    requiretty

关于php - php exec() 中的 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173201/

相关文章:

php - 下拉导航 CSS 问题

c - fscanf 不读取第一个单词的第一个字符(在 c 中)

python - 使用通知发送的远程 linux 桌面通知

linux - Ansible sudo 不起作用

python - 将 sudo 标志传递到 makefile

php - 文件上传进度条: is flash-based the only way possible

php - 无法注销mysql和php

php - 在 PHP 中查找以美元符号 $ 开头和结尾的单词

linux - awk 第一列中的项目,然后再次 awk 使用第二列中的结果?

linux - Ubuntu-带有 ACL 的 sudo