shell_exec не работает с командой nmap

У меня проблема с shell_exec Функция PHP, вот пример кода:

$output = shell_exec('nmap -PS80 -n -oG - --send-ip 11.11.11.11');

if ( $output )
{
     echo "Output found...";
}
else
{
     var_dump( $output );
}

Это возвращает: NULL, но когда я меняю shell_exec команда к следующему:

$output = shell_exec('echo 1');

тогда вывод: Output found... поэтому он работает нормально, и нет проблем с разрешениями или безопасным режимом (который, кстати, выключен).

Проблемы с выполнением nmap команда. Я проверил эту команду в командной строке оболочки в putty и она работает правильно:

# nmap -PS80 -n -oG - --send-ip 11.11.11.11
# Nmap 5.61TEST2 scan initiated Tue Feb 28 13:55:41 2012 as: nmap -PS80 -n -oG - --send-ip 11.11.11.11
# Nmap done at Tue Feb 28 13:55:43 2012 -- 1 IP address (0 hosts up) scanned in 0.04 seconds

Так в чем же проблема?

2 ответа

Решение

Попробуйте указать полный путь к nmap, как /usr/local/bin/nmap, PHP может не знать о расположении nmap. Наслаждайтесь!

Вы можете прибегнуть к exec() вместо этого, что дает вам большую диагностику ошибок:

// Capture outout from STDERR as well
$command = "nmap ... 2>&1";

exec($command, $output, $return_var);

// If return code is not zero, the command failed
if ($return_var != 0) 
{
    // dump all output, including error messages
    var_dump($output);
}
Другие вопросы по тегам