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

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

Defaults    requiretty

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

相关文章:

php - 强制 PHP CLI 将文件写入 www-data

javascript - 将 AES 解密从 CryptoJS 移植到 Php

python - gobject 的 pydev 问题

c++ - C++中的事件调度

无法在降级的 C 程序上运行 VLC

php - 从 php 网站检索数据到 Android 应用程序

php - 将查询另存为 CSV 文件,但无法获取要写入 CSV 的表头字段名称

linux - 将数字转换为千兆字节(sed、awk、sh、bash)

ubuntu - 包 'samba' 没有安装候选

java - 关于 sudo su - 用户 - 在 jsch 中的想法