将 GET 变量传递给 PHP 中的 shell_exec

Passing GET variables to shell_exec in PHP

我正在尝试 运行 我服务器上 PHP 中的 shell 脚本,该脚本使用 youtube-dl 下载视频。我的代码如下所示:

<form action="download.php" method="get">
<input type="text" name="link"><br>
<input type="submit">
</form>

我的 download.php 看起来像这样:

<?php
$link = escapeshellarg($GET["link"]);
$output = shell_exec('/Applications/MAMP/cgi-bin/youtube-dl ' .$link. ' 2>&1');
echo "<pre>$output</pre>";
?>

所以当我在我的表单中插入一个 link 时,它应该将 link 传递给 shell_exec 和 运行 命令 link ,但我得到的是:

Usage: youtube-dl [OPTIONS] URL [URL...]

youtube-dl: error: You must provide at least one URL.

这意味着该命令没有收到来自 GET 的 link。我该如何解决这个问题?

试试这个

shell_exec("/Applications/MAMP/cgi-bin/youtube-dl {$link} 2>&1");

改变

$link = escapeshellarg($GET["link"]);

$link = escapeshellarg(urldecode($_GET["link"]));

并确保您在 $_GET["link"]

中获得 url

GET 参数通过 $_GET 变量访问。注意 "GET".

之前的下划线

http://php.net/manual/en/reserved.variables.get.php