はじめに
PHPの shell_exec()
関数は、シェルコマンドを実行してその結果を文字列で取得できる便利な関数です。試験では「出力結果の形式」や「挙動」が問われることがあります。本記事では uuidgen -r
を例に、正しい挙動と出力形式を整理します。
目次
shell_exec() の基本
shell_exec(string $command): string|false|null
- 成功: コマンドの標準出力を文字列として返す
- 出力が空: 空文字列
""
を返す - 失敗:
false
またはnull
を返す
バッククォート演算子 (`ls`
) と等価です。
uuidgen -r の例
Linux環境で uuidgen -r
を実行すると、ランダムUUID(バージョン4)が生成されます。
実行するたびに異なるUUIDが返るのが正しい挙動です。
例:
<?php
declare(strict_types=1);
error_reporting(-1);
$r = shell_exec('uuidgen -r');
var_dump($r);
出力例:
string(37) "c9c0e58a-55a1-49f3-9cc7-4e6a534adb59\n"
UUIDは 8-4-4-4-12
の形式(合計36文字+改行)で返されます。
出力の末尾には改行コード \n
が含まれるため、string(37)
と表示されます。
出力例は毎回変わります(UUIDの特性)
まとめ
shell_exec()
はシェルコマンドの標準出力を文字列で返すuuidgen -r
は毎回異なるUUIDを生成する(形式は 8-4-4-4-12)- 出力例の末尾に改行が含まれるので
string(37)
になる - 回答では「形式」を押さえて記述するのが重要