2011-03-29 76 views
0

我試圖運行一個bash腳本使用shell_exec,但它似乎並沒有工作。 (似乎沒有發生)我使用nginx和最新的php5-cgi。繼承人什麼PHP文件看起來像:從php腳本啓動一個bash腳本

<?php 

$startserver = "./startserver.sh"; 
$startserver = shell_exec($startserver); 
$getprocess = "pidof hlds_amd"; 
$pid = shell_exec($getprocess); 

$fh = fopen('closeserver.sh', 'w'); 
$command = "kill -9 $pid"; 
fwrite($fh, $command); 
fclose($fh); 


$string = "at -f closeserver.sh now + 1 hour"; 
$closer = shell_exec($string); 


?> 

,這是什麼bash腳本的樣子:在phpscript

#!/bin/bash 
cd /home/kraffs/srcds 
./hlds_run -game cstrike -autoupdate +maxplayers 12 +map de_dust2 > hlds.log 2>&1 & 

世界上沒有錯誤,該文件被創建得很好,但$ startserver的似乎不執行並且$ pid是空的。我是否錯過了php文件中的某些內容,或者是否需要更改用戶的權限?謝謝你的幫助。

回答

1

取代了shell_exec,下面的功能,然後再試一次

<?php 
function runcmd($EXEC_CMD) 

    $handle = popen ($EXEC_CMD, 'r'); 
    $output = ""; 
    if ($handle) { 
     while(! feof ($handle)) { 
      $read = fgets ($handle); 
      $output .= $read; 
     } 
     pclose($handle); 
    } 
    return $output; 
} 
?> 
+0

同樣的問題,沒有任何錯誤。只是一個空白頁面。 – Kraffs 2011-03-29 16:09:14

+0

是的,它應該是一個空白頁面,因爲你沒有打印出任何輸出,如果你喜歡看到輸出,追加**回聲$輸出; **之前**返回$輸出; **在runcmd函數。插入**

** before your first ** **後,最後一個**?> **標籤。確保你有** chmod + x startserver.sh **,在** $ closer = shell_exec($ string)之前插入** runcmd(「chmod + x closeserver.sh」); ** –
                        
                            
    thaolt
                                2011-03-29 16:15:59
                            
                        
                    

+0

,它什麼也不說,什麼都不做。 – Kraffs 2011-03-29 16:20:44