2012-04-04 57 views
0

嗨,我試圖從PHP 5PHP運行其參數如PHP變量

這裏執行的jar java的jar文件是我執行的代碼:

$command = '"java -jar WEB-INF\\lib\\FileReceiver.jar '.$address.' '.$service_port.' \"'.$command.'\" \"'.$filePath.'\""'; 
exec($command, $out); 

但沒有被執行的罐子。 我已經登錄的螢火$命令變量,把輸出並插入代碼,如:

exec("java -jar WEB-INF\lib\FileReceiver.jar 127.0.1.1 2018 \"docs/document.txt \" \"C:\\apache-tomcat-7.0.26\\webapps\\test\\downloads\\doument.txt\"", $out); 

給出正確的輸出。我不明白爲什麼硬編碼它的工作原理,但包含相同信息的變量沒有。

有人可以幫我嗎?

感謝

+0

你肯定'$ adress''$ service_port''$ command'和'$ filepath'有正確的價值觀? – 2012-04-04 02:33:33

+0

你需要顯示\「,你應該寫\\」 – saturngod 2012-04-04 02:33:43

+0

@Shingetsu是的,我確定,我真的從firePHP控制檯複製了變量$命令中的whats並粘貼它。 – 2012-04-04 02:47:13

回答

1

嘗試這樣

$command = escapeshellarg($address).' '.escapeshellarg($service_port).' '.escapeshellarg($command).' '.escapeshellarg($filePath).' '; 

exec('java -jar WEB-INF\\lib\\FileReceiver.jar '.$command, $out); 
+0

同樣的問題,如果我硬編碼其變量中包含的變量,但如果我傳遞變量,jar不執行。感謝您的快速答覆。你有什麼其他的建議? – 2012-04-04 02:44:04

+0

echo $ command;並看到結果 – saturngod 2012-04-04 03:44:14

+0

我試了一下,結果是正確的。我用exec中的echo結果替換了$ command,並且它可以正常工作。爲了讓exec中的變量不能執行,我完全困惑不解。 – 2012-04-04 04:30:30

0

你過逃避你的第一個片段的雙引號。

您正在使用單引號作爲文字字符串分隔符,因此您不需要轉義雙引號。

而且最終'\""'應該'"'