shell_exec("traceroute IPaddress)
返回traceroute to IPaddress (IPaddress), 30 hops max, 40 byte packets
如何检索实际的跃点列表,以便我可以确定问题出在哪里?
答案 0 :(得分:1)
这些消息应该写入stderr
而不是常规stdout
,所以我不太清楚为什么你会看到它们出现在输出中。
我建议使用shell_exec()
而不是exec()
,因为它会捕获进程的输出和返回代码:
exec('traceroute example.com 2>&1', $out, $code);
if ($code) {
die("An error occurred while trying to traceroute: " . join("\n", $out);
}
print_r($out);
为了加快命令速度,您可以在运行-n
时使用traceroute
选项,以避免对中间跃点进行DNS查找。
请注意,运行traceroute
可能需要一段时间;如果你在命令行上运行它,你有时会看到包含* * *
的行,这可能需要很长时间!
答案 1 :(得分:0)
使用exec并查看其第二个参数:
string exec ( string $command [, array &$output [, int &$return_var ]] )
示例:
<?php
exec('traceroute test.com -m 2', $output);
var_dump($output);