php与sudo在命令行上工作但不在浏览器中工作

时间:2016-12-24 12:21:04

标签: php html exec

你好我正在写一个小的php / html页面并尝试传递用户&要运行的密码,虽然它在命令行上运行,但它在浏览器中不起作用..有什么建议吗?

$user = "echo password!";

$row = exec('$user | sudo -u user_id -S /usr/bin/VBoxManage list vms',$output,$error); 

echo "\n";

while(list(,$row) = each($output)){
    echo sprintf($row) . "<BR>\n"; 
}

if($error){
    echo "Error : $error<BR>\n"; exit; 
}

1 个答案:

答案 0 :(得分:0)

一个可能的原因是sudo二进制文件也需要一个完整的路径。

但是,您的语法不正确 - 单引号会阻止$user展开。

即使这样,exec也可能不会遵守管道请求,而是需要使用visudo授权运行Apache的用户在没有密码的情况下发出VBoxManage命令。或者您可能想要查看proc_*函数。

应该工作:

 $output = shell_exec("/bin/sh -c '{$user} | sudo -u ...'");