====== PHP からコマンド実行 ====== https://www.php.net/manual/ja/function.exec.php こんな風に書くのがいいのではないか? $outs = null; $ret = null; if (exec($cmd, $outs, $ret) === false || $ret !== 0) { $err = implode(' ', $outs); throw new Exception("Could not execute ${cmd} or failed to execute: ${err}"); } exec() が false を返すパターンは今のところ見つかっていない。。。 実行後の戻り値は $ret で見ることになり、通常成功時は 0 が帰るはず(呼び出されるスクリプトをそう作成しておくべき)なので、帰らなかった場合はログ出力などのエラー処理を行う。ちなみに command not found は以下の様になった。 $ notExistCommand bash: 127: command not found なお、負荷テストなどのため、非同期でシェルを実行しまくるには、$cmd 内のコマンドを & で終わらせて、戻り値を待たない書き方にする。 その際 exec() の中でコマンドと & の結合を行うと、なぜか非同期にはならないので、必ず exec() の外で $cmd を生成しておくこと。