Ниже пример без трубы. Это возвращает ожидаемое сообщение об ошибке.
<?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