2012-02-21 128 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()”!