私はこの作業を試みるのに数時間を費やしましたが、成功しませんでした。私はこのサイトのよくある質問を検索してコードを表示しましたが、何も見つかりませんでした。引き数を指定したphp execはまだ動作しません
私は、Linuxサーバ上のコマンドラインでうまく動作するコマンドを持っていますが、PHPのexec関数に渡してLinuxサーバ上のapacheで実行すると、そのスクリプトからの出力ではなく、呼び出されるスクリプト。
myTool -arg1 "Arg1 value" -arg2 value2 -arg3 value3
私が試してみました: は
をexecしするにescapeshellargを経由して1つの文字列(-arg1 "Arg1 value" -arg2 value2 -arg3 value3
)として、すべて一緒に引数を送る
をexecしするescapeshellcmdを経由してその全体のコマンドを送信する
をexecしするために、その全体のコマンド文字列を送信します
escapeshellarg経由で個別に引数を送信する
01結果は何も出力または引数が正しく渡されていないことを示唆していると呼ばれているスクリプトの使用情報、のいずれかではありませんのexecするescapeshellcmd経由:(-arg1 "Arg1 value"
など)を個別の引数を送る
。ここで
はコードです:
$data = array();
$commandexec = "/tools/myTool ";
$arg1 = "-arg1 \"Arg1 value\"";
$arg2 = "-arg2 value2";
$arg3 = "-arg3 value3";
$arguments_escaped = escapeshellarg($arg1). " ". escapeshellarg($arg2). " ".escapeshellarg($arg3);
$command_escaped_arguments = $commandexec . $arguments_escaped;
print "<br>command_escaped_arguments: ". $command_escaped_arguments ."<br>";
$result = exec($command_escaped_arguments, &$data);
print_r($data);
これはApacheサーバ上のPHPスクリプトの出力です:
command_escaped_arguments: /tools/myTool '-arg1 "Arg1 value"' '-arg2 value2' '-arg3 value3'
Array ([0] =>
[1] => myTool version 1.0
[2] => Usage: myTool -arg1 "Some value"
[3] => -arg3 option1|option2
[4] => [-arg2 value]
[5] =>)
誰もが私が行方不明です何のアイデアを持っていますか?
適切なコードを投稿できますか? (例は引用符で囲まれていません) – konsolenfreddy
実行エラー(パス/許可)を検出するために 'error.log'を調べてください。 – mario