2016-05-11 6 views
0

私は管理パネルを実行しようとしており、すべての異なるサービスのステータスも表示しようとしています。ポートは応答していませんが動作していますか?

これを達成するために、ポートが応答するかどうかを調べる機能を使用します。ここで

はコードです:ポート80と21のような

public function getPort($ports, $host = NULL) { 

    if (!$host) { $host = "somesite.com"; } 

    $ports = array($ports); 

    foreach ($ports as $port) { 
     $connection = @fsockopen($host, $port); 

     if (is_resource($connection)) { 
      return "<span class=\"label label-success\">Online</span>"; 
      fclose($connection); 
     } else { 
      return "<span class=\"label label-danger\">Offline</span>"; 
     } 
    } 
} 

ポートは、MySQLのための3306のようなオンラインではなく、ポートとして現れたり9987.それはこのようなものです、なぜ私が最初にチェックするためにどのような方法がありますし、これを解決してオンラインに見えるようにしますか?

答えて

1

デフォルトでは、MySQLの3306ポートはローカルIPアドレス - 127.0.0.1でのみ使用可能です。そのため、マシン外からポートをテストする場合、ポートは閉じた状態で表示されます。

サービスを別のマシンから監視する場合は、ファイアウォールが許可していることを確認して、サービスが127.0.0.1ではなくグローバルIPアドレスでリッスンしていることを確認します(確認するにはnetstat -an |grep LISTENを簡単に実行できます)。

関連する問題