У меня возникла проблема с shell_exec
php shell_exec
, вот пример кода:
$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
Так где же проблема?
Попробуйте указать полный путь к 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); }