【PHP】外部プログラムの実行
普段はPHPのexecやsystem関数はあまり使わないですが、
今回は外部ファイルを取得するため、OSのwgetコマンドを使いたいと思います。
execとsystem関数の比較をしてみたいと思います。
exec
1 | string exec ( string $command [, array &$output [, int &$return_var ]] ) |
・戻り値
マニュアルには、「コマンド結果の最後の行を返します」と書いてありますが、
実は何か返してくるのが微妙に分かりません。
・$command
実行したいコマンド
・$output
コマンドの出力内容が、$outputに配列として格納します。
実行結果の出力内容を調べるのに、このパラメーターを使えばいいと思います。
・$return_var
コマンドの実行結果が正常の場合は数字の0、 異常野場合は数字の1になります。
system
1 | string system ( string $command [, int &$return_var ] ) |
・戻り値
マニュアルには、「成功時はコマンド出力の最後の行を返し、失敗時は FALSE を返します。」と書いてありますが、
実はexecの$outputを配列ではなく文字列で返す感じです。
・$command
実行したいコマンド
・$return_var
コマンドの実行結果が正常の場合は数字の0、 異常野場合は数字の1になります。
おまけ:Linuxの標準出力と標準エラー出力
Linuxの標準出力は1番、標準エラー出力は2番です。
標準エラー出力に標準出力にまとめるに、
1 | command 2 > &1 |
と書きます。
それを利用して、execやsystemの出力結果に、正常の場合でも異常の場合でも、結果を取得することができます。
1 2 3 4 5 6 7 8 9 | $cmd = "ls -al 2>&1"; // execの場合 exec( $cmd, $output); var_dump($output);// 結果出力 // systemの場合 $res = system($cmd); var_dump($res);// 結果出力 |
Author Profile
スターフィールド編集部
SHARE