exec (‘ping’) работает на сервере разработки, но не работает

Я пишу инструмент ping с использованием CakePHP 3. Код работает на моем сервере разработки, возвращая правильный статус 0, Но на рабочем сервере он всегда показывает код состояния 2 вместо 0, несмотря на погоду $ip действителен или нет.

Это мой код:

public function testDomain(){
if($this->request->is('post')){
$ip = $this->request->data['domain'];

$starttime = microtime(true);

$stoptime  = microtime(true);
$total_time = ($stoptime - $starttime) * 1000;

exec("ping -n 3 $ip", $output, $status);
print_r($status);
if (0 == $status) {
echo $mode = 'up';
if($total_time <= '500'){
$result =  'Very Fast';
}else if($total_time <='1000'){
$result = 'Fast';
}else if($total_time <='1500'){
$result ='Good';
}else if($total_time <='2500'){
$result ='Slow';
}else if($total_time <='3000'){
$result ='Very Slow';
}else{
$result ='down';
}
echo $ip.'  '.'is'.'  '.$result;
}else{
echo $mode = 'down';

}
}
exit;
}

1

Решение

Ваша машина разработки, вероятно, Windows, а ваш рабочий сервер Linux.

Вот что происходит, когда вы запускаете команду в Linux:

me@mycomputer:~$ ping -n 3 192.168.0.1
connect: Invalid argument

3 не является допустимым аргументом для ping,

Ваша команда в Linux должна быть переписана как:

exec("ping -c 3 $ip", $output, $status);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]