我遇到了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的shell命令行中检查了该命令,并且它正常工作:
# 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
问题出在哪里?
答案 0 :(得分:4)
尝试指定nmap的完整路径,例如/usr/local/bin/nmap
。 PHP可能不知道nmap位置。享受!
答案 1 :(得分:2)
您可能希望使用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);
}