duanji2014
2015-06-17 10:58 阅读 293
已采纳

在PHP中将GET变量传递给shell_exec

I'm trying to run a shell script in PHP on my server that use youtube-dl to download a video. My code look like this:

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

and my download.php look like this:

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

So when I insert a link in my form, it should pass the link to the shell_exec and run the command with this link, but what I got is this:

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

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

Which means that command didn't received the link from GET. How can I solve this?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    dongpo1216 dongpo1216 2015-06-17 11:18

    GET-parameters are accessed via $_GET-variable. Notice the underscore before the "GET".

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

    点赞 评论 复制链接分享
  • dtv55860 dtv55860 2015-06-17 11:01

    Try this one

    shell_exec("/Applications/MAMP/cgi-bin/youtube-dl {$link} 2>&1");
    
    点赞 评论 复制链接分享
  • doudanma9706 doudanma9706 2015-06-17 11:10

    Change

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

    to

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

    and make sure you are getting url in $_GET["link"]

    点赞 评论 复制链接分享

相关推荐