使用exec();在PHP中使用变量

使用exec();在PHP中使用变量,php,arrays,debian,Php,Arrays,Debian,我试图在本地Debian服务器上执行一个命令。代码如下: if (isset($INPUTdifference)) { $counter = count($INPUTdifference); for ($i = 0; $i < $counter; $i++) { $pkts = $INPUTdifference[$i]["pkts"]; $bytes = $INPUTdifference[$i]["bytes"]; $t

我试图在本地Debian服务器上执行一个命令。代码如下:

if (isset($INPUTdifference)) {


    $counter = count($INPUTdifference);
    for ($i = 0; $i < $counter; $i++) {

        $pkts = $INPUTdifference[$i]["pkts"];
        $bytes = $INPUTdifference[$i]["bytes"];
        $target = $INPUTdifference[$i]["target"];     // = -j 
        $prot = $INPUTdifference[$i]["prot"];        // = -p
        $opt = $INPUTdifference[$i]["opt"];
        $in = $INPUTdifference[$i]["in"];            // = -i
        $out = $INPUTdifference[$i]["out"];         // = -o
        $source = $INPUTdifference[$i]["source"];   // = -s
        $destination = $INPUTdifference[$i]["destination"]; // -d
        //Filter results

        $badOpt;
        if (strcmp($opt, $badOpt)) {
            $opt = "all";
            return $opt;
        }

        // Execute command with parameters acquired from array
        exec("sudo /sbin/iptables -A INPUT -j $target -p $prot -i $in -o $out -s $source -d $destination ");
        echo 'complete yo';
    }
}
if(isset($INPUTdifference)){
$counter=计数($INPUTdifference);
对于($i=0;$i<$counter;$i++){
$pkts=$INPUTdifference[$i][“pkts”];
$bytes=$INPUTdifference[$i][“bytes”];
$target=$INPUTdifference[$i][“target”];//=-j
$prot=$INPUTdifference[$i][“prot”];//=-p
$opt=$INPUTdifference[$i][“opt”];
$in=$INPUTdifference[$i][“in”];//=-i
$out=$INPUTdifference[$i][“out”];//=-o
$source=$INPUTdifference[$i][“source”];//=-s
$destination=$INPUTdifference[$i][“destination”];//-d
//筛选结果
$badOpt;
如果(strcmp($opt,$badOpt)){
$opt=“全部”;
返回$opt;
}
//使用从数组中获取的参数执行命令
exec(“sudo/sbin/iptables-A输入-j$target-p$prot-i$in-o$out-s$source-d$destination”);
呼应‘完全的哟’;
}
}
如您所见,我正在尝试将数组中的值用于我的
exec
调用。所有值都经过测试并正确解析


我尝试执行该命令,但它没有在服务器上给我任何反馈/结果。一开始它是在抱怨我怎么没有得到一个正确的参数,但我修正了它。因此,它正在服务器上执行。我想,这就把范围缩小到了语法本身。。。我在这里遗漏了什么吗?

您可能希望将direct/path/to/sudo而不仅仅是sudo。exec有时不喜欢自己找出路径。

您的用户是一个sudoer,对吗?如何向sudo提供密码?
exec("sudo…
大家好,这里的安全性没有问题,因为我正在练习,但非常感谢您提供的提示。记下来供以后研究。@m.C.如果此脚本通过sudo命令行在服务器上执行,是否有必要?如果您使用sudo执行PHP脚本,那么再次执行sudo可能会导致问题。请在不使用sud的情况下尝试o在PHP中,只需使用sudo执行PHP脚本,而不是内部代码“安全性在这里没有问题,因为我正在练习”……从您的代码中可以明显看出,安全性对您来说是一个很大的问题。永远不要这样做。