Вывод внешнего процесса как в pipe, так и в php://stdout

Если я запускаю внешний скрипт в PHP, используя

$p = proc_open(
    'myscript.php', 
    array(
        0 => array('file', 'inputfile.txt', 'r'),
        1 => array('pipe', 'w'),
        2 => array('pipe', 'w'),
    ), 
    $pipes,
    $path
);

тогда я могу получить вывод stderr через

$error = stream_get_contents($pipes[2]);

Если я хочу, чтобы вывод stderr отображался на консоли, то я могу запустить его как:

$p = proc_open(
    'myscript.php', 
    array(
        0 => array('file', 'inputfile.txt', 'r'),
        1 => array('file', 'php://stdout', 'w'),
        2 => array('file', 'php://stderr', 'w'),
    ), 
    $pipes,
    $path
);

Тем не мение,

$error = stream_get_contents($pipes[2]);

не будет производить никакого вывода.

Как сделать так, чтобы вывод stderr выводился на консоль и был доступен для использования моим сценарием?

0 ответов

Другие вопросы по тегам