web-dev-qa-db-ja.com

php exec()はコマンドを実行していません

exec()を_'whoami'_とともに使用して、それが機能するかどうかを確認し、次の結果を得ました。

_nt authority\system
_

ここで、exec()関数を介してphpからのパラメーターを使用して_.exe_ファイルを実行する必要があります。

command Promptでこれを試してみましたが、実際には指定されたパラメーターでプログラムを実行します。これはコマンドの例です。


[〜#〜] note [〜#〜] exeファイルは3つの入力を取得します(フォルダ、file_name、report_file_nmae)

_> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
_

しかし、phpファイルからこのコマンドを実行すると:

_exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');
_

何も起きていません。 exec()関数を使用するのはこれが初めてなので、その詳細に精通していません。 何が問題なのですか?

私は使用してみました:

  • _\\_の代わりに_\_
  • escapeshellarg()ディレクトリ上
  • ディレクトリフォルダー名の周りに_""_を追加

運がない

補遺:

_echo exec($command)  // echos < .... why?
_

または

_exec($command, $output);
print_r($output);        // Array()
_

ファイルのアクセス許可をすべてのユーザーのフルコントロールに変更しました。 _command Prompt_からプログラムを呼び出すと、1秒の時計の横にアイコンが表示されます。

しかし、phpからの同じ呼び出しは、プログラムを呼び出すことさえしません。

編集

exec('notepad.exe');でも機能していません。多分php構成で何かしなければなりませんか?

33
Brian

exec()関数は初めてだと既に言った。さらに掘り下げた後、exec()のコマンドの最後に追加する必要がある_2>&1_に出会いました。

コメントでも指摘してくれてありがとう_@mattosmat_。あなたはそれがLinuxコマンドだと言ったので、私はこれをすぐには試しませんでした、私はWindowsにいます.

だから、私が発見したことは、コマンドが実際にバックエンドで実行されていることです。そのため、実際に実行されているのを見ることができませんでした。

同様の問題を抱えていたすべての人にとって、このコマンドを使用することをお勧めします。 すべてのエラーを指摘し、実行に関する情報/詳細も通知します。

_exec('some_command 2>&1', $output);
print_r($output);  // to see the response to your command
_

すべての助けてくれてありがとう、私はそれを感謝します;)

79
Brian

実行しようとしているバイナリへの完全なパスを指定することもできます。 ImageMagickを使用しようとしたときの問題は解決しました。

0
craned