PHP, как получить обе stderr из двух команд, разделенных с помощью канала? - PullRequest
0 голосов
/ 13 января 2019

Ниже пример без трубы. Это возвращает ожидаемое сообщение об ошибке.

<?php
$exec_output = array();
$exec_return_var = 0;

@exec('lame --unsupported 2>&1', $exec_output, $exec_return_var);

if ($exec_return_var != 0)
    echo 'Error: ' . implode('<br>', $exec_output);

Ошибка: lame: нераспознанная опция - не поддерживается

Но как получить оба сообщения об ошибках с двумя командами, разделенными конвейером? В приведенном ниже примере я получаю сообщение об ошибке только от второй команды.

    <?php
    $exec_output = array();
    $exec_return_var = 0;

    @exec('flac --unsupported 2>&1 | lame --unsupported 2>&1', $exec_output, $exec_return_var);

if ($exec_return_var != 0)
    echo 'Error: ' . implode('<br>', $exec_output);

Ошибка: lame: нераспознанная опция --unsupported

...