s平面の左側

左側なので安定してます(制御工学の話は出てきません)

PHP の proc_open() でコマンド実行するときに標準出力と標準エラー出力を同一の変数(文字列)に格納する

両方とも同一の php://temp に出力させ、 process_close() したあとに rewind() でファイルポインタを先頭に戻して stream_get_contents() で読み込む。

<?php

$command = ['sh', '-c', 'echo hoge; echo fuga >&2']; // 実行したいコマンド

$fp = fopen('php://temp', 'w+');
$descriptorSpec = [
    1 => $fp, // ファイルディスクリプタ番号 1 = 標準出力
    2 => $fp, // ファイルディスクリプタ番号 2 = 標準エラー出力
];

$process = proc_open($command, $descriptorSpec, $_);
if ($process === false) {
    throw new RuntimeException('cannot open process');
}

$exitCode = proc_close($process);

rewind($fp);
$out = stream_get_contents($fp);

echo $exitCode . PHP_EOL;
echo $out;

実行結果

0
hoge
fuga

参考