2013-11-21 44 views
2

目前我正在开发一个项目,需要通过单击网页创建虚拟机。从PHP中运行创建虚拟机的Bash脚本

这是我的bash脚本,我用它来创建一个虚拟机,它工作的很完美,但是当通过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文件中的条目由我

阿帕奇ALL =(ALL)NOPASSWD:ALL

我仍然无法通过PHP提示一些解决方案运行bash脚本。

+0

您可以发布您正在使用的bash脚本吗? – blissini

+0

发布*本地化*技术问题。并不是说你做不到。发布命令和stderr/stdout,然后有人能够帮助你。 c俱乐部? – erbdex

+0

是的C俱乐部.... – shivams

回答

0

这个问题可能是因为没有从shell调用$PATH时没有正确设置。尝试使用绝对路径qemu-imgvirt-install

我在这里看到的另一个问题:你真的不希望Apache能够运行任何命令通过sudo,你呢?将您的sudoers行改为只限制您的脚本:

apache ALL=NOPASSWD:/root/Desktop/install.sh