2014-08-28 105 views
1

我見過比同時搜索上這幾個問題較多,但沒有一個工作的答案,只是其他的事情建議嘗試Exec的返回

$server = "IPADDRESS"; 
$username = "USER"; 
$port = "22"; 
$ftpuser = "FTPUSER" 
$ftppass = "FTPPASS" 

$command = "/usr/local/psa/bin/subscription --create " . $domain . " -owner admin -service-plan 'Default Domain' -ip " . $server . " -login " . $ftpuser . " -passwd '" . $ftppass . "'"; 
$cmd_string = "ssh -p ".$port." ".$username."@".$server." ".$command; 
exec($cmd_string, $output); 
echo $command; 
echo $output; 

使用的正常運行時間爲命令工作正常空白陣列,並採取$命令的確切輸出和手動粘貼它也可以正常輸出SUCCESS: Creation of domain DOMAIN completed - 然而,當運行這個,它只是輸出'數組',沒有內容。我錯過了什麼嗎?

回答

0
PHP manual' page about exec

是清楚的:

如果輸出參數存在,則指定的陣列將被與來自指令輸出的每一行填充。尾隨空格,例如\ n,不包含在此數組中。請注意,如果數組已經包含一些元素,則exec()將追加到數組的末尾。如果您不希望函數追加元素,請在將數組傳遞給exec()之前先調用unset()方法。

它返回一個數組,填充exec調用的每一行。

所以你的情況,你應該使用:

echo $output[0]; // The first and only line 
+0

輸出[0]什麼都沒有,沒有成功,沒有錯誤,只是空白輸出 - 我用這個結構之前檢索輸出數組,和一個標準不指定行的輸出返回數組的每一行。 – Dabien 2014-08-28 11:47:13

+0

@Dabien然後,只需嘗試'var_dump($ output)'並查看其結構。它是一個數組,因爲你告訴它輸出'數組',也許有一個額外的換行符,因爲它是'$ output [1]' – Sugar 2014-08-28 11:52:09

+0

var_dump($ output)發出'array(0){}' - 我知道這是一個數組,我的意思是說,echo $輸出反正會顯示每一行。 – Dabien 2014-08-28 11:54:21