我想通过 PHP 启动虚拟机,但是一直没有成功。以下是我得到的结果。
<?php
if(isset($_POST['btn_start'])){
echo shell_exec('whoami');
echo exec('virsh start winagain');
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Manage VPS</title>
</head>
<body>
<form method="POST" action="vps.php">
<input type="submit" name="btn_start" value="Start">
</form>
</body>
</html>
我收到错误:
error: failed to connect to the hypervisor
error: no valid connection
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
所以我尝试将这一行放入我的 /etc/sudoers 文件中
www-data ALL = NOPASSWD: /var/run/libvirt/libvirt-sock
但它什么也没做。
我现在没什么主意了,请帮帮忙。
答案1
如果您要使用 sudo (您可能会这样做)来提升权限,您需要:
- 授予对
virsh
命令的访问权限而不是套接字文件 virsh
在/etc/sudoers
ie中使用命令的绝对路径
www-data ALL = NOPASSWD: /path/to/virsh
- 需要调用
sudo
你的 exec 命令 virsh
需要在 exec 命令中使用 sudo 的绝对路径,即
shell_exec("/bin/sudo /path/to/virsh start wine again")