0

$hosts_to_pingアレイ内の IP を ping する必要があるこの小さなスクリプトがあります。この PHP は、index.html 内の JavaScript で呼び出されます。

しかし、$rvalは常に 1 であるため (ホストに到達できないことを意味します)、何かが間違っています。しかし、最初の 2 つのホストが生きていることはわかっています。

したがって、$res変数を出力すると、次のメッセージが表示されますNeed to give the IP$host関数内で変数が実際の IP アドレスに置き換えられない理由がわかりません。

<?php
  function ping($host) {
  exec(sprintf('ping -n 4', escapeshellarg($host)), $res, $rval);
    print_r($res);
    return $rval === 0;
  }

  $hosts_to_ping = array('10.54.23.254', '10.22.23.254', '10.23.66.134');
?>

<ul>
<?php foreach ($hosts_to_ping as $host): ?>
  <li>
  <?php echo $host; ?>
  <?php $up = ping($host); ?>

    (<img src="<?php echo $up ? 'on' : 'off'; ?>"
          alt="<?php echo $up ? 'up' : 'down'; ?>">)
  </li>
<?php endforeach; ?>
</ul>
4

2 に答える 2

1

これは、sprintf で何も置き換えないためです。動作させるには、おそらく次のようにする必要があります。exec(sprintf('ping -n 4 %s', escapeshellarg($host)), $res, $rval);

于 2010-05-21T07:31:07.380 に答える
1

この行で:

  exec(sprintf('ping -n 4', escapeshellarg($host)), $res, $rval);

%sescapeshellarg($host)を見逃したため、sprintfは文字列を補間しません。その行を次のように置き換えます。

  exec(sprintf('ping -n 4 %s', escapeshellarg($host)), $res, $rval);

これを試して、動作するかどうかを確認してください。

于 2010-05-21T07:31:59.520 に答える