2017-05-09 17 views
2

私はページにアクセスしているときにのみ表示されるデバッグウィンドウをコーディングする必要があります。私は私のIPを含むDDNSアドレスを持っています。このIPはサーバー上で尋ねられます。それとも尋ねるべきだと言うことができます。しかし解決の問題があります。gethostbynameを使用してIPを解決する

は、私が使用してIPを解決しようとした:

echo gethostbyname("google.com"); 

どんなに私が使用しているもののドメイン、それは常に失敗しないとのみ記載されているように、ドメインを返します。失敗した場合は、未変更のホスト名を含むIPv4アドレスまたは文字列を返します。

私も試してみました:

function getAddrByHost($host, $timeout = 3) { 
    $query = "nslookup -timeout=$timeout -retry=1 $host"; 
    if(preg_match('/\nAddress: (.*)\n/', $query, $matches)) 
     return trim($matches[1]); 
    return $host; 
} 
echo getAddrByHost("google.com"); 

この1つは同じ結果になります。私のPCのコマンドラインにnslookup -timeout=$timeout -retry=1 google.comを実行すると問題なく動作します。しかし、これはスクリプトのために必要なので、これはまったく助けにならないでしょう:)

私は通常のIPv4アドレスを期待しています。

この機能には特別なphp.ini設定が必要ですか?

私の主な質問は、この機能が完全に壊れているかどうかです。

+0

ロケーションヘッダーを検索できませんか? 'gethostbyname($ headers ['Location'])' – Pogrindis

+0

と変数 '$ headers'はどこから来るべきですか? :D – Dwza

+0

うん、 'get_headers'メソッドですが、実際にここでテストすると、どちらもうまくいきません! :| – Pogrindis

答えて

2
  1. はあなたがPHPからpassthru('nslookup google.com 2>&1')を試みることによって、さらにデバッグすることができ
  2. ポート53(DNS)に接続する機能を確認してください。 stdoutとstderrからの完全な出力が表示されます。これは、より多くの情報を含む可能性が高いからです。
関連する問題