在PHP中将GET变量传递给shell_exec

时间:2015-06-17 10:58:46

标签: php shell get mamp

我试图在我的服务器上运行PHP脚本,使用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>";
?>

因此,当我在表单中插入一个链接时,它应该将链接传递给shell_exec并使用此链接运行命令,但我得到的是:

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

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

这意味着命令没有从GET收到链接。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

通过$ _GET-variable访问GET参数。注意“GET”之前的下划线。

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

更改

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

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

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

中获取网址