好吧,我有这个程序,我需要通过任一函数运行,但它位于我的dekstop(这个ubuntu 11.04)。
我把它移到/ home / Username,但没有骰子。
我跑
$blah = exec('sudo | echo mypassword | /home/server1/program commandhere', $test);
var_dump($test);
var_dump($blah); ?>
输出无效。
我被告知如果我想通过sudo运行它我需要将Apache用户这是www-data添加到sudoers列表,我添加了它,但没有运气。 基本上,我已经尝试了很多东西,它只是不会运行。为什么呢?
编辑: 如果我将它粘贴到终端,它可以很好地工作,只是不用exec,system或passtrhu。
答案 0 :(得分:2)
改为使用echo mypassword | sudo -S
。
它还取决于哪个用户具有sudo
权限。如果您想从apache
流程运行此功能,则还需要授予apache
用户sudo
权限。
另外,为了澄清,命令应该是:
echo mypassword | sudo -S /home/server1/program commandhere
答案 1 :(得分:0)
查看您的安全日志。不确定这在Ubuntu上的位置,可能是/ var / log / secure或/ var / log / messages。我打赌您在那里找到类似于sudo requires a TTY
或sorry, you must have a TTY to run sudo
的消息,表明sudo
配置为在没有真正的交互式shell的情况下无法工作。也就是说,sudo
不允许您在脚本中使用它或由外部程序调用。
我最近在尝试将Gnome键盘快捷键绑定到sudo
命令时自己处理了这个问题。
如果是这种情况,您需要在/etc/sudoers
#Defaults requiretty