我有一个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还是包裹在输出缓冲器语句中。
我读过PHP中的exec()调用的抑制输出,但无法解决问题。
dos2unix将其消息打印到stderr。要重定向它们,您需要使用2>而不是>。
$dos2unix = exec("dos2unix ".$filePath." 2> /dev/null");
另一个选项是使用选项-Q。使用-Q DOS2UNIX将不会打印消息,并且当出现问题时它不会返回错误代码。
$dos2unix = exec("dos2unix -q ".$filePath.");