2012-08-14 171 views
0

我在寫一個應用程序,它從用戶的文本輸入生成一個文本文件。將生成的文本文件作爲輸入的bash腳本應該生成另一個腳本作爲輸出。從PHP調用bash腳本生成另一個腳本

我嘗試使用exec命令,但我不知道它是否工作。我想是這樣的:

exec('generate.sh input.txt generated.sh'); 

generate.sh有兩個輸入端:

  1. input.txt文件 - 有從PHP頁面(文字由 '\ n' 分隔)
  2. generated.sh用戶輸入 - 名生成的文件(由'generate.sh'生成)。

如何從PHP執行bash腳本以獲得上述輸出?

在此先感謝。

+1

generate.sh也需要用引號 – tubaguy50035 2012-08-14 14:33:49

回答

0

整個參數給exec需要像這樣的字符串:

exec('generate.sh input.txt generated.sh'); 
+0

我試過這個,但是它不生成腳本。 – Klone 2012-08-14 14:39:58

+0

是否正在運行generate.sh?你需要把它作爲'('/path/to/generate.sh /path/to/input.txt /path/to/generated.sh')引用嗎?或者它們是可執行文件的系統別名,腳本瞭解輸入/輸出的目錄是什麼?文件權限是否爲可執行文件(已設置x位)以及輸入/輸出目錄和文件設置正確? – 2012-08-14 14:49:01

+0

你說得對。我沒有爲所有文件設置x位。非常感謝。 – Klone 2012-08-14 15:31:44

0
$generate = '/path/to/generate.sh'; 
$input = '/path/to/input.txt'; 
$generated = '/path/to/generated.sh'; 

if(file_exists($generate)) 
{ 
    chmod($generate, 0755); 
    if(file_exists($input)) 
    { 
     exec($generate.' '.$input.' '.$generated); 
    } 
    else 
    { 
     echo "Input file not found: ".$input."<br />"; 
    } 
} 
else 
{ 
    echo "Generate file not found: ".$generate."<br />"; 
} 

此外,您也可以考慮系統(),了shell_exec(),中繼()或proc_open()來執行外部命令。