PHP中的exec()问题

时间:2011-05-30 01:06:33

标签: php linux ubuntu

好吧,我有这个程序,我需要通过任一函数运行,但它位于我的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。

2 个答案:

答案 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 TTYsorry, you must have a TTY to run sudo的消息,表明sudo配置为在没有真正的交互式shell的情况下无法工作。也就是说,sudo不允许您在脚本中使用它或由外部程序调用。

我最近在尝试将Gnome键盘快捷键绑定到sudo命令时自己处理了这个问题。

如果是这种情况,您需要在/etc/sudoers

中注释掉以下行
#Defaults requiretty