Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从反引号执行PHP时出现问题_Php_Exec - Fatal编程技术网

从反引号执行PHP时出现问题

从反引号执行PHP时出现问题,php,exec,Php,Exec,我有以下PHP代码: for($i=1; $i <= 25; $i++){ $ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i"; if($i%12==0){ echo $idoids; $rtable=$rtable.`snmpget -Os -Ov -Oe -Oq -Ot -v 1

我有以下PHP代码:

 for($i=1; $i <= 25; $i++){
        $ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";
if($i%12==0){
                echo $idoids;
        $rtable=$rtable.`snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids`;
        $ifoids="";
        echo $i.": ".$rtable."</br>";       
}}

for($i=1;$i如果运行附带的示例,您应该能够看到$ifoids正在被清除

for($i=1; $i <= 25; $i++) {
        $ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";

        if($i%12==0) {
            $rtable = "snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids";
            $ifoids="";
            echo $i.": ".$rtable."</br>";
        }
}

对于($i=1;$i以下是正确的代码:

for($i=1; $i <= 25; $i++){
        $ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";
        if($i%12==0){
            $rtable="snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids";
            $ifoids="";
            echo $i.": ".$rtable."</br>";       
        }
}

for($i=1;$i不是我,在我看来它应该可以工作。您实际遇到了什么问题使您认为它不工作?当它第二次进入if时($i==24)发送到命令的值与第一次迭代时的值相同。我看到里面有echo。对我有效,伙计-它对我也有效,变量
$ifoids
被重置。好的,我一直在测试,它确实更改了变量,但在命令
snmpget
第二次输入时,它不会在命令内部,尽管$ifoids的值不同的是,它仍然给我与上一次迭代相同的输出。但是我想要的是commnad
snmpget…..
的输出,这就是为什么它在反引号中。我必须分成12个集合,因为我每个commnad只能发送一定数量的请求。但是$rtable应该包含所有的concat输出,以便以后使用解析它。啊,我想他们很久以前就不赞成这种行为了。在这种情况下,运行上面的命令,它应该向您证明$ifoids正在被清除。上面添加了示例输出。如果这不是您所期望的,则提供一个命令示例您希望生成的结果会很好。这是真的。但是由于某种原因,第二次命令的输出与第一次命令的输出相同,就好像它使用了第一个值一样,这可能就是我认为赋值有问题的原因。这可能与反引号有关。这显然是命令,我不确定反向引用是否是原因,它应该与标准终端执行相同。如果有疑问,请手动执行命令并检查响应。我做了,响应应该是不同的。
for($i=1; $i <= 25; $i++){
        $ifoids = $ifoids." ifPhysAddress.$i "."ifType.$i "."ifSpeed.$i "."ifDescr.$i "."ifOperStatus.$i";
        if($i%12==0){
            $rtable="snmpget -Os -Ov -Oe -Oq -Ot -v 1 -c public $ip $ifoids";
            $ifoids="";
            echo $i.": ".$rtable."</br>";       
        }
}