在PHP中将GET变量传递给shell_exec
我试图在我的服务器上运行一个PHP shell脚本,它使用在PHP中将GET变量传递给shell_exec,php,shell,get,mamp,Php,Shell,Get,Mamp,我试图在我的服务器上运行一个PHP shell脚本,它使用youtube dl下载视频。我的代码如下所示: <form action="download.php" method="get"> <input type="text" name="link"><br> <input type="submit"> </form> <?php $link = escapeshellarg($GET["link"]); $output =
youtube dl
下载视频。我的代码如下所示:
<form action="download.php" method="get">
<input type="text" name="link"><br>
<input type="submit">
</form>
<?php
$link = escapeshellarg($GET["link"]);
$output = shell_exec('/Applications/MAMP/cgi-bin/youtube-dl ' .$link. ' 2>&1');
echo "<pre>$output</pre>";
?>
";
?>
因此,当我在表单中插入链接时,它应该将链接传递给shell_exec并使用此链接运行命令,但我得到的是:
shell_exec("/Applications/MAMP/cgi-bin/youtube-dl {$link} 2>&1");
这意味着该命令没有收到来自GET的链接。我如何解决此问题?试试这个
$link = escapeshellarg($GET["link"]);
改变
到
并确保您在
$\u GET[“link”]
中获取url,GET参数是通过$\u GET-variable访问的。请注意“GET”前面的下划线
您在$link变量中得到了什么?这似乎可行,但我现在遇到了另一个错误,
TypeError:execv()arg 2必须只包含字符串
$link = escapeshellarg($GET["link"]);
$link = escapeshellarg(urldecode($_GET["link"]));