将 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".
之前的下划线
我正在尝试 运行 我服务器上 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"]
GET 参数通过 $_GET 变量访问。注意 "GET".
之前的下划线