Функция PHP не выполняется так, как хотелось - PullRequest
0 голосов
/ 12 февраля 2019

Для текущего проекта мне нужно, чтобы переменная изменилась, а затем выполнила пару команд.Текущий код, который у меня есть: (код в php)

function get_num_clients()
{
    $wlan0_clients = exec('iw dev wlan0 station dump | grep Station | wc -l');    
    if(isset($wlan0_clients)){
        if ($wlan0_clients == "0") {
            return $wlan0_clients;
        } else{
            exec('arp -a > /pinapple/email_log.txt');
            exec('/tmp/emailbash.sh');
            return $wlan0_clients;
        }        
    }
}

Насколько я вижу, он должен это сделать.Целью этого кода является отправка результата в строку состояния на странице индекса php, что он делает, но когда он не == 0, остальная часть оператора не обрабатывается!

любая помощь будет отличной.Спасибо, Марк

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Попробуй это.Чтобы определить, какая конкретная строка вызывает проблемы, вставляйте оператор 'echo' после каждой строки кода, а затем, когда вы запускаете свой код, следите за выводом на консоль, чтобы увидеть, какие строки отражены, а какие нет.

function get_num_clients()
{
   $wlan0_clients = exec('iw dev wlan0 station dump | grep Station | wc -l');
   echo "point 1";    
   if(isset($wlan0_clients)){
     echo "point 2";        
     if ($wlan0_clients == "0") {
       echo "point 3";            
       return $wlan0_clients;
     }else{
       echo "point 4";
       exec('arp -a > /pinapple/email_log.txt');
       echo "point 5";
       exec('/tmp/emailbash.sh');
       echo "point 6";
       return $wlan0_clients;
    }        
  }
}
0 голосов
/ 12 февраля 2019

wc -l выравнивает вывод с пробелами, вам нужно удалить их.

function get_num_clients()
{
    $wlan0_clients = exec('iw dev wlan0 station dump | grep Station | wc -l');    
    if(isset($wlan0_clients)){
        $wlan0_clients = trim($wlan0_clients);
        if ($wlan0_clients == "0") {
            return $wlan0_clients;
        } else{
            exec('arp -a > /pinapple/email_log.txt');
            exec('/tmp/emailbash.sh');
            return $wlan0_clients;
        }        
    }
}
...