массивы — php exec не работает для ping на сервере

Я пытаюсь пропинговать IP с помощью функции exec, чтобы узнать, пингуется ли IP или нет, он отлично работает на localhost и возвращает выходной массив, но когда я запускаю его на сервере, он возвращает пустой выходной массив.

когда exec работает, он возвращает массив как $ output и возвращает переменную как $ return_var.

если ping неуспешен, поэтому, когда IP не может быть пропингован, он возвращает:

массив: с 9 элементами

return_var: 1

если IP пропингован, он возвращает:

массив: более 9 элементов

return_var: 0

на сервере он возвращает:

пустой массив

return_var: 2

как я искал и обнаружил, когда return_var равен 2, это означает, что exec не работает и есть ошибка.

это мой код:

 <?php
exec('ping -n 4 '.$ip, $output, $return_var);

echo "<pre>";
var_dump($output);
?>

exec () не отключен на сервере, я попробовал это:

<?php
$disabled = explode(',', ini_get('disable_functions'));

echo "<pre>";
var_dump($disabled);
?>

и это список отключенных функций, который я получил:

 array(8) {
[0]=>
string(7) "symlink"[1]=>
string(10) "proc_close"[2]=>
string(9) "proc_open"[3]=>
string(5) "popen"[4]=>
string(6) "system"[5]=>
string(2) "dl"[6]=>
string(8) "passthru"[7]=>
string(14) "escapeshellcmd"}

есть ли вероятность того, что какая-либо из этих заблокированных функций вызовет проблемы с функциональностью exec ()?

также безопасный режим отключен на сервере, и он работает php версии 5.3.29

0

Решение

Я решил это, я думал, что все серверы работают под управлением Windows, но тот, на котором работает мой сайт, работает под управлением Unix, и exec нужно немного изменить:

на окнах это:

exec('ping -n 4 '.$ip, $output, $return_var);

и на Unix, это:

exec('ping -c 4 '.$ip, $output, $return_var);

но новая проблема заключается в том, что он не пингует ips, который на самом деле пингуется, но не может быть найден в ns_lookup в cmd. некоторые из этих ips пингуются, а некоторые нет. на localhost работает нормально.

1

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

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

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