You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP表单传值至shell_exec失败:YouTube下载页面问题排查

问题排查与修复方案

你遇到的核心问题其实很直观——表单提交方式和PHP获取参数的方式不匹配:

  • 你的表单用的是method="post",意味着表单数据会通过POST请求体传递;
  • 但PHP代码里却用$_GET["addr"]来获取参数,这是在读取URL里的GET参数,自然拿不到POST过来的值,所以$link最终是空的,传给youtube-dl就会报ERROR: u'' is not a valid URL的错误。

修复步骤

把PHP里的$_GET["addr"]改成$_POST["addr"]即可,修复后的PHP代码如下:

<?php 
echo "<pre>";
// 从POST数组里获取addr参数,而非GET
$link = escapeshellarg($_POST["addr"]); 
if(isset($_POST['youtubedl'])) {
    $output = shell_exec("/usr/local/bin/youtube-dl $link");
    echo $link;
    echo $output;
} 
?>

额外安全提示

虽然你用了escapeshellarg()来规避命令注入风险,但还是建议在处理前先验证用户输入的URL有效性,比如用filter_var()做简单校验:

$addr = $_POST["addr"];
if (filter_var($addr, FILTER_VALIDATE_URL)) {
    $link = escapeshellarg($addr);
    // 执行youtube-dl逻辑
} else {
    echo "请输入有效的YouTube URL";
}

这样既能解决参数传递的问题,也能提升页面的安全性。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:30:38