从创建虚拟机的PHP运行Bash脚本

从创建虚拟机的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/

目前,我正在从事一个项目,需要创建一个虚拟机从点击网页

这是我的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/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