在exec()中ping不提供正确的结果

时间:2014-02-13 13:10:48

标签: php exec

当我尝试运行以下脚本时

$host = "ip here";
exec("/bin/ping -c2 -w2 $host", $outcome, $status); 
return print_r($outcome);

我看到以下结果

Array () 1

关于为什么会发生这种情况的任何想法?我尝试ping代替/bin/ping无效

更新

直接从SSH运行时,我会看到正确的响应,因此:

PING ip here 56(84) bytes of data.
64 bytes from ip here : icmp_seq=1 ttl=243 time=4.47 ms
64 bytes from ip here : icmp_seq=2 ttl=243 time=4.40 ms

--- ip here ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 4.406/4.438/4.470/0.032 ms

1 个答案:

答案 0 :(得分:2)

尝试通过附加“2>& 1”将std_err重定向到std_out,看看它是否有任何帮助。

exec("/bin/ping -c2 -w2 $host 2>&1", $outcome, $status); 

根据您的配置,安全模式可能只允许您在某些目录中执行,或者根本不执行。

见这里:php.net/function.exec