外部コマンドを実行 - exec()、system()
当ページのリンクには広告が含まれています。
プログラミング言語PHPで、外部コマンドを実行する関数 exec()、system()を紹介します。
exec()とsystem()は似ている関数(外部コマンドを実行するという点では全く同じ)ですが、exec()は引数に指定したコマンドを実行結果を出力せず、system()はコマンドの実行結果を出力するという点が異なります。
ただ、exec()は実行結果を引数に指定した配列に格納することができるので、実行結果に何かしらの処理を掛ける場合は、こちらのほうが扱いやすいです。
exec関数
string exec ( string $command [, array &$output [, int &$return_var ]] )
引数に指定したコマンド($command)を実行します。コマンドの実行結果を出力しません。
引数 $command 実行するコマンドを指定します。 &$output 変数を指定した場合、コマンドの出力結果を行ごとに配列に格納します。 &$return_var 変数を指定した場合、コマンドのステータスが格納されます。 コマンド実行の成功時には「0」、コマンド実行の失敗時には「1」が格納されます。
返り値
コマンド実行結果の最後の行を返します。
system関数
string system ( string $command [, int &$return_var ] )
引数に指定したコマンド($command)を実行します。コマンドの実行結果を出力します。
引数 $command 実行するコマンドを指定します。 &$return_var 変数を指定した場合、コマンドのステータスが格納されます。 コマンド実行の成功時には「0」、コマンド実行の失敗時には「1」が格納されます。
返り値
コマンド実行結果の最後の行を返します。
サンプルコード
引数に指定したコマンドを実行するサンプルコードです。exec関数とsystem関数の挙動の違いを見てみましょう。
exec( コマンド, 出力配列, コマンドステータス ) system( コマンド, コマンドステータス )
<?php
echo "# exec関数\n";
var_dump( exec('ls') ); // 引数なし
var_dump( exec('ls', $out, $ret) ); // 引数あり
print_r( $out );
var_dump( $ret );
echo "\n# system関数\n";
var_dump( system('ls', $ret) );
var_dump( $ret );
?>
実行結果です。
# exec関数
string(9) "sleep.php"
string(9) "sleep.php"
Array
(
[0] => define.php
[1] => die-exit.php
[2] => die-exit2.php
[3] => exec.php
[4] => sleep.php
)
int(0)
# system関数
define.php
die-exit.php
die-exit2.php
exec.php
sleep.php
string(9) "sleep.php"
int(0)
exec関数は、コマンド実行結果を出力しません。出力を取得したい場合は、「出力配列」を引数に指定する必要があります。
対して、system関数は、コマンド実行結果を文字列で出力します。
その他 の人気記事
まだデータがありません。