SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【php】exec()で実行したコマンドが正常に終了し成功したか確認する

phpからexec()関数でコマンドを実行することがあります。

コマンドが成功したかどうかは、exec()関数が成功したかどうかと関係ないので、exec()関数の戻り値でコマンドの正常終了を知ることは基本的にできません。

コマンドの実行結果を調べたいときは、第2引数、第3引数を使って、ある程度見ることができます。

exec($command, $output, $return_var);

第2引数には標準出力に出力されたコマンドの結果、第3引数にはコマンドの戻り値が格納されます。

一般的なLinuxのコマンドの戻り値は、0が正常終了。0以外が異常があったとき。

var_dump($output, $return_var);
→ array(0) { } int(127)

なんて返ってきたら、エラーコード 127 はおそらくシェルが起動できなかった。実行しようとしたコマンドにパスが通ってないなど考えられる。

他にも、コマンド特有の戻り値が得られることもあります。コマンドがない、コマンドを実行する権限がないときも似たような感じになります。

結果をもっと見たいときは、コマンドの方に” 2> error.log”など書いてエラーをファイルに書き出したり、エラー出力を標準出力にリダイレクトしたりすることもできます。

関連するメモ