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);
}