0

こんにちは私はPHP5からjarを実行しようとしています

これが私が実行しているコードです:

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

しかし、jarは実行されていません。$ command変数をfirebugに記録し、出力を取得して次のようなコードに挿入しました。

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);

正しい出力が得られます。なぜハードコーディングが機能するのかわかりませんが、同じ情報を含む変数は機能しません。

誰かが私を助けてくれますか?

ありがとう

4

2 に答える 2

1

このようにしてみてください

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

exec('java -jar WEB-INF\\lib\\FileReceiver.jar '.$command, $out);
于 2012-04-04T02:34:26.363 に答える
0

最初のスニペットの二重引用符を過剰にエスケープしています。

リテラル文字列区切り文字に一重引用符を使用しているため、二重引用符をエスケープする必要はありません。

また、決勝戦'\""''"'

于 2012-04-04T02:36:49.993 に答える