从创建虚拟机的PHP运行Bash脚本
目前,我正在从事一个项目,需要创建一个虚拟机从点击网页 这是我的bash脚本,我正在使用它创建一个vm,它工作得很好,但是当通过php调用时,我无法运行这个脚本从创建虚拟机的PHP运行Bash脚本,php,bash,web,virtual-machine,virtualization,Php,Bash,Web,Virtual Machine,Virtualization,目前,我正在从事一个项目,需要创建一个虚拟机从点击网页 这是我的bash脚本,我正在使用它创建一个vm,它工作得很好,但是当通过php调用时,我无法运行这个脚本 #!/bin/bash set -e if [ ! -f "/tmp/value.dat" ] ; then value=0 else value=`cat /tmp/value.dat` fi value=`expr ${value} + 1` echo "${value}" > /tmp/
#!/bin/bash
set -e
if [ ! -f "/tmp/value.dat" ] ; then
value=0
else
value=`cat /tmp/value.dat`
fi
value=`expr ${value} + 1`
echo "${value}" > /tmp/value.dat
qemu-img create -f raw /var/lib/libvirt/images/disk$value.img 5.1G
virt-install --name=instance$value --ram=1024 --arch=i686 --vcpus=1 --os-type=linux --disk path=/var/lib/libvirt/images/disk$value.img,bus=virtio,format=raw --location ftp://10.21.40.227/ --extra-args "ks=ftp://10.21.40.227/ks.cfg" --autostart
这是我正在尝试运行的php脚本
<?php
$bashfile = shell_exec("sudo /root/Desktop/install.sh");
echo "<pre>$bashfile<pre>";
?>
这是我在sudoers文件中的条目
apacheall=(ALL)NOPASSWD:ALL
但我仍然无法通过php运行bash脚本,并提出了一些解决方案。问题可能是当不是从shell调用时,
$PATH
设置不正确。尝试为qemu-img
和virt-install
使用绝对路径
我在这里看到的另一个问题是:您真的不希望Apache能够通过sudo
运行任何命令,是吗?将sudoers行更改为此,以将其仅限于脚本:
你能发布你正在使用的bash脚本吗?发布本地化的技术问题。并不是说你做不到。发布命令和stderr/stdout,然后有人可以帮助您。c俱乐部?尤其是。现在,您正在运行PHP/apache的同一台主机上执行“/root/Desktop/install.sh”。您不想在远程主机上执行此操作吗?
apache ALL=NOPASSWD:/root/Desktop/install.sh