PHP execとsystem関数に違いとサンプルコード

今までexec関数を使い、コマンドを実行させたりするプログラムを書いたことはあったのですが、systemという似たような関数があったので、二つの違いについて調べてみました。

スポンサーリンク

execとsystemの違い

実行した出力を表示するかしないかの違いがあり、引数を指定することで、execでも配列に結果を出力可能。

実際に、サンプルコードを実行して、違いを見てみましょう。

サンプルコード

コマンドライン上からサンプルを実行してみます。

hogeを出力し、結果を表示。

php -r '$cmd = "echo hoge"; exec($cmd, $output, $result); var_dump($output); var_dump($result);'
array(1) {
  [0]=>
  string(4) "hoge"
}
int(0)  ←実行したコマンドのステータス※1

$outputに結果が格納されるものの、コマンド実行結果には出力(hoge)が表示されない。

$ php -r '$cmd ="echo hoge"; system($cmd, $result); var_dump($result);'
hoge  ←コマンド結果
int(0)  ←実行したコマンドのステータス※1

※1.実行したコマンドのステータスとは、コマンドが成功したか失敗したかを数値で表現。

使いどころ

exec()
システムコマンドを呼び出すだけのとき。
system()
システムコマンドを実行し、出力を表示するとき。

もっと知りたい人は、公式サイトへ。
参考exec
参考system


スポンサーリンク
PAGE TOP