ラボ > PHPOS:Linux

PHPでLinuxのコマンド実行(exec()、system())

LinuxのコマンドをPHPで実行したい。

作成日:2018-08-02, 更新日:2023-04-06

基本

見ている感じ下記のような使い分けで良さげ
・出力結果を加工したいなら「exec()」。
・出力結果を見たいだけなら「system()」。
・処理の結果の合否が欲しいなら(引数が少ない)「system()」。

確か他にも実行方法があったような気がする・・・バッククォートでも実行できたような気がするけど・・・保留。

exec()

第2引数に変数名を設定すると、出力結果を行単位で配列にして格納してくれる。

$command = 'ls';

var_dump( exec($command, $outut, $status) );
// string(10) "web.config" // ←実行元? ファイル名ではない・・・よく分からないヤツ

var_dump( $outut );  // exec()の出力結果が$oututに格納
// array(9) {
//   [0] => "oooooo.oooo"
//   [1] => "oooooo.oooo"
// }

var_dump( $status ); // exec()の処理の結果が$statusに格納(「0」がエラー無し)
// int(0)

system()

$command = 'ls';

var_dump( system($command, $status) );
//oooooo.oooo
//oooooo.oooo
//string(10) "web.config" // ←実行元? ファイル名ではない・・・よく分からないヤツ

var_dump( $status ); // system()の処理の結果が$statusに格納(「0」がエラー無し)
//int(0)