gpt4 book ai didi

php - shell_exec 抛出 : sudo: no tty present and no askpass program specified

转载 作者:搜寻专家 更新时间:2023-10-31 22:01:50 25 4
gpt4 key购买 nike

我一直在尝试使用 php 中的 shell_exec() 函数执行脚本:

我写了下面几行代码:

$command = "bash /path/to/my/script/ funciton_name() 2>&1";
echo shell_exec($command);

在我正在执行的 shell 脚本中:

sudo rsync -avvc /source/path /destination/path

在浏览器上执行此操作时,我收到以下错误消息:

sudo: no tty present and no askpass program specified

当我在我的服务器上执行相同的 shell 脚本时,它执行得很好。

当我浏览这个论坛上发布的类似问题时,我意识到我必须在我的服务器上添加 NOPASSWD 行,我发现它已经以下列格式添加:

User_Alias  NOBODY=nobody,apache
NOBODY ALL=(ALL) NOPASSWD : /path/to/my/script

还有当我这样做的时候:

echo shell_exec("whois");

我得到的输出是:

apache

任何帮助解决这个问题的帮助都会有很大帮助。

最佳答案

sudo 需要 TTY,即使您已将其设置为无密码,除非您 explicitly do not require it .但是作为@Cfreak pointed out ,通过设置正确的 safer 来避免 sudo 会更好(更简单 and access rights ) (在继续之前先阅读)。

rsync 本身 将不需要 root 权限来进行合理配置的 *nix 安装。要验证这一点,您可以检查 type -a rsync 不会打印任何奇怪的东西,例如 rsync is aliased to `sudo rsync'ls -l $ (which rsync) 打印合理的权限(至少为每个人提供 rx)。

关于php - shell_exec 抛出 : sudo: no tty present and no askpass program specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com