你好我正在写一个小的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;
}
答案 0 :(得分:0)
一个可能的原因是sudo二进制文件也需要一个完整的路径。
但是,您的语法不正确 - 单引号会阻止$user
展开。
即使这样,exec
也可能不会遵守管道请求,而是需要使用visudo
授权运行Apache的用户在没有密码的情况下发出VBoxManage命令。或者您可能想要查看proc_*
函数。
此应该工作:
$output = shell_exec("/bin/sh -c '{$user} | sudo -u ...'");