任意のシェルコマンドを実行する - PHP5 プログラミング

PROGRAM


任意のシェルコマンドを実行する

PHP5 では exec 関数を使って、任意のシェルコマンドを実行することができます。

$result = exec($command);

このようにすることで、$command で指定したシェルコマンドを実行して、その結果のうちの最後の行を戻り値として返します。

 

複数行の結果を出力するコマンドで、それらを全て取得したい場合には、第二引数に配列を指定します。

exec($command, $resultLines);

このようにすることで、第二引数に指定した変数に結果を 1 行ずつ配列の要素として追加してくれます。

 

実行したコマンドの終了コードを取得したい場合は、第3引数を使用します。

exec($command, $resultLines, $resultCode);

こうすることで、実行したコマンドの終了コードが $resultCode に格納されます。

 

標準エラーも取得するには

PHP の exec 関数では、標準出力に出力された結果を取得することができます。

そのため、標準エラーも含めて取得したいような場合には、標準エラーも標準入力に出力するように実行コマンドを調整する必要があります。

 

シェルスクリプト (/bin/sh) の場合には、コマンドの末尾に "2>&1" を付けると標準エラーも標準出力に取り込まれるようになります。

exec("$command 2>&1", $resultLines, $resultCode);

これで、標準エラーも 1 行として第二引数の $resultLines に追加されるようになります。

説明のために "$command 2>&1" としましたが、もちろん $command に格納する文字列の中で "2>&1" を末尾につけておけば大丈夫です。


[ もどる ]