У меня есть запущенный проект Jenkins, который имеет следующую команду, обернутую в PHP exec —
$dos2unix = exec("dos2unix ".$filePath);
Он показывает следующий нежелательный вывод команды в выводе консоли Jenkins и загромождает экран —
dos2unix: converting file /home/jenkins/deployment_beta/phing/scratchpad/adserver/app/webroot/openx/lib/OA/Dal/Delivery/mysql.php to UNIX format ...
dos2unix: converting file /home/jenkins/deployment_beta/phing/scratchpad/adserver/app/webroot/openx/lib/OA/Dal/Maintenance/Statistics/Common.php to UNIX format ...
Я попытался обернуть команду в ob_start () и ob_end_clean (), а также направил вывод в / dev / null —
ob_start();
$dos2unix = exec("dos2unix ".$filePath." > /dev/null");
ob_end_clean();
Но я все еще получаю то же самое в выводе консоли.
Примечание. Если я запускаю сборку вручную в командной строке, я не вижу этот нежелательный вывод, независимо от того, направил ли я вывод в / dev / null или обернут в операторы буфера вывода.
я прочитал Подавление вывода из вызовов exec () в PHP но не смог решить проблему.
dos2unix печатает свои сообщения в stderr. Чтобы перенаправить их, вам нужно использовать 2> вместо>.
$dos2unix = exec("dos2unix ".$filePath." 2> /dev/null");
Другой вариант — использовать опцию -q. С -q dos2unix не будет печатать сообщения и не будет возвращать код ошибки, если что-то пойдет не так.
$dos2unix = exec("dos2unix -q ".$filePath.");
Других решений пока нет …