【问题标题】:Centos 6.2 - Apache 2 - PHP 5 - Blank result executingCentos 6.2 - Apache 2 - PHP 5 - 空白结果执行
【发布时间】:2012-03-01 14:43:45
【问题描述】:

我在 PHP 上执行 'ping' 时遇到一个问题,我收到了一个空白结果,但如果我执行其他命令,例如 'whoami',我收到了正确的结果,你能帮帮我吗?有什么想法吗?

<?php
exec('ping google.com', $output);
echo $output;
//Result: 
?>

<?php
exec('whoami', $output);
echo $output;
//Result: apache
?>

谢谢

注意:也许可以来自 apache 配置?还是php配置?还是linux权限?

【问题讨论】:

  • 我想指出$output 将是一个数组,因此如果输出跨越多行(例如使用 ping),则不能直接回显它。
  • 是的,我试过但没用,&lt;?php echo exec('ping google.com'); //Result: ?&gt;

标签: php linux exec ping


【解决方案1】:

我猜这是因为 ping 的默认行为是永不停止。它会一直持续到你杀死它为止。

man ping 说“-c 计数 发送计数 ECHO_REQUEST 数据包后停止。使用截止时间选项,ping 等待计数 ECHO_REPLY 数据包,直到 超时到期。”

尝试添加限制 ping 运行时间的选项,看看是否有结果。

【讨论】:

  • 我绑了但没用。我在 wamp (windows os) 中运行了一个简单的命令 ping 并完美运行,但在 Linux 中却没有
【解决方案2】:

试试这个代码。

<?php
function GetPing($ip=NULL) {
 if(empty($ip)) {$ip = $_SERVER['REMOTE_ADDR'];}
 if(getenv("OS")=="Windows_NT") {
  $exec = exec("ping -n 3 -l 64 ".$ip);
  return end(explode(" ", $exec ));
 }
 else {
  $exec = exec("ping -c 3 -s 64 -t 64 ".$ip);
  $array = explode("/", end(explode("=", $exec )) );
  return ceil($array[1]) . 'ms';
 }
}

echo GetPing();
?>

【讨论】:

  • 谢谢,但在所有情况下我都收到了 0 毫秒,即使使用像 8.8.8.8(谷歌的 dns)这样的外部主机
  • 对不起,历史相同,结果:0ms ping 到 google.com
【解决方案3】:

你也可以试试这个

<?php
$output = shell_exec('ping google.com');
echo "<pre>$output</pre>";
?>

【讨论】:

  • 谢谢,但只有服务器响应了这个 html 才起作用。 “
猜你喜欢
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 2018-12-20
相关资源
最近更新 更多