2013-12-12 41 views
0

我正在将Web应用程序从Windows环境转换为Linux(Ubuntu)。我有一个页面,在lighttpd和PHP5下提供,而且我得到的结果很奇怪,resultsPHP没有以安全模式运行,也没有定义任何disabled_functions。多个linux命令不返回预期结果

我试图模仿下面终端命令:

的/ usr/local/bin中/ findscu -S -k “0008,0052 =研究” -k “0020,000d” 192.168.56.1 5678

这会导致信息流返回,从终端运行时产生8行信息。每个参数之间都有空格(只是为了确保在这里指出)。

我的PHP文件包含以下

$cmd = '/usr/local/bin/findscu'; 
$param = ' -S -k "0008,0052=STUDY" -k "0020,000d" 192.168.56.1 5678'; 
$param = ''; // $retVal = 0, $output=63 elements 
$fullcmd = $cmd.$param; 
$perms = fileperms($cmd); 
$info = exec($fullcmd,$output,$retVar); 
echo $fullcmd; 
echo '<p>Permissions : '.substr(sprintf('%o', fileperms($cmd)), -4); 
echo '<p>I am running as '.exec('whoami'); 
echo '<p>Return value : '.$retVar; 

echo '<br>No of elements : '.count($output); 
if(count($output)>1){ 
    echo '<pre>'; 
    print_r($output); 
    echo '</pre>'; 
    } 

正如你看到的,我定义$ PARAM两次2号线,然后再在第3行,有效地过写作$ PARAM为空白。当运行此,我得到相同的结果,因为我将在终端上,基本上“人”页findscu,包含64行的输出(返回阵列的63种元素)

/usr/local/bin/findscu 
Permissions : 0755 
I am running as www-data 
Return value : 0 
No of elements : 63 

Array 
(
    [0] => $dcmtk: findscu v3.6.0 2011-01-06 $ 
    [1] => 
    [2] => findscu: DICOM query (C-FIND) SCU 
    [3] => usage: findscu [options] peer port [dcmfile-in...] 

...和等等

但是,当我注释第3行,因此定义我的$ param变量,我得到一个$ retVar = 0(这是好的,命令运行没有错误),但计数的返回数组也包含0个元素。

这是导致页面内容:

/usr/local/bin/findscu -S -k '0008,0052=STUDY' -k '0020,000d' 192.168.56.1 5678 
Permissions : 0755 
I am running as www-data 
Return value : 0 
No of elements : 0 

我看不到我在做这到底错在这里。我是当然它与空间有关,但我看不到它。我试着用双引号,单引号,每个单独的反斜线设置$ param,甚至尝试了$ cmd ='整个命令在一个变量中'。

已经很晚了,我确定我太累了,看不到它,但我需要一些帮助!

有什么想法?

(顺便说一句,这是来自终端:)

[email protected]:/home/pry/OSID# /usr/local/bin/findscu -S -k '0008,0052=STUDY' -k '0020,000d' 192.168.56.1 5678 
W: --------------------------- 
W: Find Response: 1 (Pending) 
W: 
W: # Dicom-Data-Set 
W: # Used TransferSyntax: Little Endian Implicit 
W: (0008,0052) CS [STUDY ]         # 6, 1 QueryRetrieveLevel 
W: (0020,000d) UI [1.3.46.670589.5.2.10.2156913941.892665384.993397] # 48, 1 StudyInstanceUID 
W: 
+0

哦 - 我已经检查了Apache2并且发生了同样的事情,所以现在我知道这不是一个LIGHTTPD问题。 – user3093786

+0

现在 - 有趣的是,我看到我应该分配给我的数组($ output)的响应记录在apache2 error.log中? – user3093786

回答

0

输出,现在我知道...追加2> & 1到命令的端部的输出作为重定向回标准输出反对标准错误。有趣的是,我想这是关于我的命令输出是否实际上是错误而不是预期响应的语义。