2013-11-21 43 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