首页 > 解决方案 > PHP Ping 无反应

问题描述

我正在我的 Mac 上使用 larval valet 运行本地开发环境。而且我正在尝试 ping 主机,但是我从未得到响应。

运行像“ls”这样的简单 shell 命令可以工作并给出预期的输出。

代码

function getStatus($name) {
    $ip =   "1.1.1.1";
    exec("ping -n 3 $ip", $output, $status);
    print_r($output);
    print_r($status);
}

输出:

Array ( ) 127

标签: phplaravelpingvalet

解决方案


由于 ping 在 *NIX 系统上无限循环运行,因此您必须限制它执行的 ping 次数。我怀疑您尝试使用-n参数来执行此操作,但是,正确的参数是-c代表“计数”。

因此,您应该像这样执行 ping:

exec("ping -n 3 $ip", $output, $status);

它工作正常:

Array
(
    [0] => PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
    [1] => 64 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=8.71 ms
    [2] => 64 bytes from 1.1.1.1: icmp_seq=2 ttl=58 time=8.71 ms
    [3] => 64 bytes from 1.1.1.1: icmp_seq=3 ttl=58 time=8.82 ms
    [4] =>
    [5] => --- 1.1.1.1 ping statistics ---
    [6] => 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    [7] => rtt min/avg/max/mdev = 8.713/8.751/8.824/0.119 ms
)   

旁注:该-n参数也存在,但只是指示 ping 只接受数字输入 - IP 地址而不是主机名。

从手册页:https ://ss64.com/osx/ping.html

-n         Numeric output only. No attempt will be made to lookup symbolic
           names for host addresses.

推荐阅读