使用 PHP & Html 形式部署虚拟机
Deploy VMs with PHP & Html form
在我开始使用 VM 管理器平台的那些日子里,它与 virt-manager、KVM 和 PhP 7.2 一起工作。
在form.html中应该指定kvm2.php可以运行VM创建命令的值。
问题是我给好值,填好字段,kvm2.php(libvirt)连续写这个错误信息:
“错误
--name 是必需的
--需要 MiB 的内存量
我做错了什么?
提前感谢您的回答,
埃里克
截图:
https://imgur.com/a/zr8ePBn
form.html:
<form action="kvm2.php" method="get">
VM name: <input type="text" name="VMname" id="VMname" required><br>
vCPU number(s): <input type="text" name="VMvCPU" id="VMvCPU" required><br>
Memory (in MB): <input type="text" name="VMmem" id="VMmem" required><br>
Disk size (in GB): <input type="text" name="VMdisk" id="VMdisk" required><br>
<input type="submit" name="submit">
</form>
kvm2.php:
<?php
$output=shell_exec("virt-install --connect qemu:///system --name=$VMname --vcpus=$VMvCPU --memory=$VMmem --disk size=$VMdisk --cdrom=/home/erik/Letöltések/debian.iso --os-type linux --vnc --network=bridge:br0 2>&1");
echo "<pre>$output</pre>";
?>
编辑:
当前代码为:
$output=shell_exec("sudo virt-install --connect qemu:///system --name=$_GET["VMname"]; --vcpus=$_GET["VMvCPU"]; --memory=$_GET["VMmem"]; --disk size=$_GET["VMdisk"]; 2>&1");
应要求,我打开显示错误:
Parse error: syntax error, unexpected '"', expecting '-' or identifier
(T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) on line 2
您的语法错误是因为双引号字符串中有双引号。 PHP 无法算出字符串真正开始和结束的位置。
有两种解决方法:
1) 对字符串中的字段名称使用单引号:
$output=shell_exec("sudo virt-install --connect qemu:///system --name=$_GET['VMname']; --vcpus=$_GET['VMvCPU']; --memory=$_GET['VMmem']; --disk size=$_GET['VMdisk']; 2>&1");
2) 使用字符串连接而不是插值:
$output=shell_exec("sudo virt-install --connect qemu:///system --name=".$_GET["VMname"]."; --vcpus=".$_GET["VMvCPU"]."; --memory=".$_GET["VMmem"]."; --disk size=".$_GET["VMdisk"]>"; 2>&1");
(我假设每次引用 $_GET 变量后的分号是 virt-install 命令所需语法的一部分,但如果不是,则需要删除它们也是。)
在我开始使用 VM 管理器平台的那些日子里,它与 virt-manager、KVM 和 PhP 7.2 一起工作。 在form.html中应该指定kvm2.php可以运行VM创建命令的值。
问题是我给好值,填好字段,kvm2.php(libvirt)连续写这个错误信息:
“错误
--name 是必需的
--需要 MiB 的内存量
我做错了什么?
提前感谢您的回答,
埃里克
截图:
https://imgur.com/a/zr8ePBn
form.html:
<form action="kvm2.php" method="get">
VM name: <input type="text" name="VMname" id="VMname" required><br>
vCPU number(s): <input type="text" name="VMvCPU" id="VMvCPU" required><br>
Memory (in MB): <input type="text" name="VMmem" id="VMmem" required><br>
Disk size (in GB): <input type="text" name="VMdisk" id="VMdisk" required><br>
<input type="submit" name="submit">
</form>
kvm2.php:
<?php
$output=shell_exec("virt-install --connect qemu:///system --name=$VMname --vcpus=$VMvCPU --memory=$VMmem --disk size=$VMdisk --cdrom=/home/erik/Letöltések/debian.iso --os-type linux --vnc --network=bridge:br0 2>&1");
echo "<pre>$output</pre>";
?>
编辑:
当前代码为:
$output=shell_exec("sudo virt-install --connect qemu:///system --name=$_GET["VMname"]; --vcpus=$_GET["VMvCPU"]; --memory=$_GET["VMmem"]; --disk size=$_GET["VMdisk"]; 2>&1");
应要求,我打开显示错误:
Parse error: syntax error, unexpected '"', expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) on line 2
您的语法错误是因为双引号字符串中有双引号。 PHP 无法算出字符串真正开始和结束的位置。
有两种解决方法:
1) 对字符串中的字段名称使用单引号:
$output=shell_exec("sudo virt-install --connect qemu:///system --name=$_GET['VMname']; --vcpus=$_GET['VMvCPU']; --memory=$_GET['VMmem']; --disk size=$_GET['VMdisk']; 2>&1");
2) 使用字符串连接而不是插值:
$output=shell_exec("sudo virt-install --connect qemu:///system --name=".$_GET["VMname"]."; --vcpus=".$_GET["VMvCPU"]."; --memory=".$_GET["VMmem"]."; --disk size=".$_GET["VMdisk"]>"; 2>&1");
(我假设每次引用 $_GET 变量后的分号是 virt-install 命令所需语法的一部分,但如果不是,则需要删除它们也是。)