2012-02-21 155 views
-1

我寫一個PHP腳本調用一個文件服務器 文件使用:呼叫FO從PHP

<?php 
$ret=system("command"); 
?> 

的問題是,當文件需要一些參數 我無法找到的一種方式這樣做,當使用

<?php 
$ret=system("command"); 
?> 

的PHP跳過要求變量的那部分 並分配給ID的

因爲隨機一個

,並在一開始就像

$ret = system("command argument1 argument2 argument3..."); 

我無法通過主題beause參數應用的nmber取決於用戶 我的意思是,他保持entring數據到一個動態數組,他entill進入「終結」

+2

「PHP跳過了要求變量的部分」 - 你能詳細說明一下嗎? – Vitamin 2012-02-21 22:59:31

+0

命令是什麼?我認爲這可能是一個問題。 – 2012-02-21 23:05:10

+0

您是否想將數據傳輸到程序的['STDIN'](http://en.wikipedia.org/wiki/Standard_streams)?如果是這樣的話,可能是['proc_open()'](http://php.net/manual/en/function.proc-open.php),你正在尋找...... – DaveRandom 2012-02-21 23:06:04

回答

1
$ret = system("command argument1 argument2 argument3..."); 

只需加載參數,就像從命令行調用程序一樣。

+0

不,我不能這樣做,因爲參數的數量取決於執行的tm我有一個循環,用戶保持數據直到他輸入「end」 – unfamous 2012-02-21 23:02:44

+0

別忘了['escapeshellarg()'](http://php.net/manual/en/function.escapeshellarg.php)... ;-) – DaveRandom 2012-02-21 23:02:50

+0

然後使用'implode(array_map (「escapeshellarg」,$ input));',其中'$ input'是用戶輸入的數組。 – 2012-02-21 23:23:35

0
$cmd = "cmd param1 param2"; 
system($cmd,$return_value); 
($return_value == 0) or die("returned an error: $cmd"); 
+0

,我不能在開始時傳遞主題,比如因爲參數的數量取決於用戶,我的意思是他繼續向動態數組輸入數據,直到他輸入「end」 – unfamous 2012-02-21 23:09:13

0

如果你的意思是,你有一個數組,可以有任意數量的參數使用:

$commandParameters = implode(" ",$dynamicArray); 
$ret = system("command ".escapeshellarg($commandParameters)); 
0

經由用戶獲取參數。 HTML表單,然後當你知道什麼(和多少)參數時 - 你可以像所有人一樣使用「system()」!