【问题标题】:PHP Exec - How to only display the result of the last commandPHP Exec - 如何只显示最后一个命令的结果
【发布时间】:2023-03-16 18:17:01
【问题描述】:

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

在这个脚本的最后我做了一个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";
        }
    }
}

谢谢! ~昆汀

【问题讨论】:

    标签: php shell exec


    【解决方案1】:

    通过exec()-q--quiet 添加到您的命令中,它不会输出任何“调试”消息。

    来自documentation

    -q, --quiet 激活安静模式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 2019-03-11
      • 2021-11-01
      • 2012-02-14
      • 1970-01-01
      相关资源
      最近更新 更多