PHP Exec -如何只显示最后一个命令的结果


PHP Exec - How to only display the result of the last command

我使用exec php函数来运行一个脚本,该脚本以mp3格式抓取YouTube视频(使用youtube-dl)。

在这个脚本的末尾,我做了一个echo,这是我想要的结果。

但是当我启动php页面时,输出由youtbe-dl所做的一切组成。像这样:

    [youtube] zTkS9SvhHUI: Downloading webpage
    [youtube] zTkS9SvhHUI: Downloading video info webpage
    [youtube] zTkS9SvhHUI: Extracting video information
    [youtube] zTkS9SvhHUI: Downloading js player en_US-vflgFv_Kx
    [youtube] zTkS9SvhHUI: Downloading js player en_US-vflgFv_Kx
    [download] Destination: /var/www/xxx/mp3dl/Kaskade - Whatever Ft KOLAJ (NEUS Remix).webm 
    [download] 0.0% of 3.84MiB at 10.17KiB/s ETA 06:26 
    [download] 0.1% of 3.84MiB at 30.44KiB/s ETA 02:09 
    [. . .] 
    [download] 100.0% of 3.84MiB at 4.01MiB/s ETA 00:00 
    [download] 100% of 3.84MiB in 00:00
    [ffmpeg] Destination: /var/www/xxx/mp3dl/Kaskade - Whatever Ft KOLAJ (NEUS Remix).mp3
    Deleting original file /var/www/xxx/mp3dl/Kaskade - Whatever Ft KOLAJ (NEUS Remix).webm (pass -k to keep)
    /var/www/xxx/mp3dl/Kaskade - Whatever Ft KOLAJ (NEUS Remix).mp3

我唯一需要的是:

/var/www/xxx/mp3dl/Kaskade - Whatever Ft KOLAJ (NEUS Remix).mp3

我该怎么做呢?有什么我不明白的吗?

编辑:这是我的php代码:

$url = htmlspecialchars($_POST['url']);
$choice1 = $_POST['choice1'];
$output = exec('sh scripts/ytdlmp3_direct.sh "'.$url.'"');
if(isset($_POST['action'])){
    if(empty($url)) {
        print("<div class='card-panel yellow'>Please add a URL</div>")  ;
    } else {
        if($choice1 == "download") {
            print $output;
        } elseif($choice1 == "store") {
            print "Soon";
        }
    }
}

谢谢!~昆汀

通过exec()-q——quiet添加到命令中,它将不会输出任何"调试"消息。

从文档

-q,——quiet