web-dev-qa-db-ja.com

PHP error:php_network_getaddresses:getaddrinfo failed:(他のサイトから情報を取得中。)

外部ソースから情報を取得しようとすると、次のエラーが表示されます。

警告:php_network_getaddresses:getaddrinfo failed:行番号...での名前解決の一時的な失敗.

昨日はすべてが順調だったので、このスクリプトはどうなりましたか。このスクリプトは機能せず、上記のエラーが表示されます。この問題を解決するための解決策やヒントはありますか?

$uri = "http://api.hostip.info/?ip=$ip&position=true";

$dom->load($uri);

DNSをIPに変換してみましたが、警告が表示されます:failed to open

$uri = "174.129.200.54/?ip=$ip&position=true";

httpを削除しようとしましたが、まだ上記のエラーが発生しています。

27
Imran Khan

ホスト名を解決できない可能性がありますDNSの問題かもしれませんが、ホストに到達できません...

ホスト名の代わりにIPアドレスを使用してみてください...このホスト名をpingしてください... nslookup it ...

35
Dmitri Gudkov

以下では httpd.confファイル、ServerNameを適切に設定します。

/etc/httpd/conf/httpd.conf

以下のように:

ServerName 127.0.0.1:80

または

ServerName sitename

これは私が直面していた同様の問題を解決しました。

8
Anand

私の場合(私のマシンはubuntu 16)、ns行の下に/etc/resolvconf/resolv.conf.d/baseファイルを追加します。

nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888

次に、更新スクリプトを実行し、

resolvconf -u
4
crx4

使用しているキャッシュDNSサーバーが適切に動作していない(または解決しているドメインのDNSサーバーが適切に動作していない)と想像します。前者の可能性を修正してみてください。

ネットワークアダプタに少なくとも2つのネームサーバーが登録されていますか?別のキャッシングDNSサーバーを使用してこれを除外するには、常にコンピューターを入れ替えることができます。 Googleを試してください:

8.8.8.8
8.8.4.4
3
Steve Mayne

接続しようとしているリモートサーバーの一時的な停止を回避できる場合、ローカルネットワークの構成は問題のままです。

ホスト名の代わりにIPアドレスを使用することは、リモートホスト上のデフォルトドメインに対してのみ機能します。

Www.google.com(またはそのIPアドレス)を使用しようとするとどうなりますか?それでも接続できない場合は、サーバーと外の世界との間のネットワークに関係しています。

1
symcbean

これは古いスレッドですが、CentOS 7でnslookupを実行しているときに最近同じエラーに遭遇し、グーグル検索でこれを含むSO)の議論に導かれました。 /etc/resolv.confへのネームサーバーエントリだけでは、resolv.confのネームサーバーの値がNetworkManagerによって、イーサネットIP構成に関連付けられたethプロファイルにあるデフォルトのDNSネームサーバーで上書きされるため、役に立ちませんでした。

@ m-canvarで述べたように、/ etc/resolv.confに次のエントリを設定します

search yourdomain.com
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 8.8.4.4

NetworkManagerによるこれらのエントリの上書きを防ぐために、2つの2つのアプローチがあります。

オプション1:IPv4/IPv6プロファイルに関連付けられたethプロファイルでNM_CONTROLLED = noを設定します。

オプション2:NetworkManagerサービスの実行を無効にします。

chkconfig NetworkManager off
service NetworkManager stop

詳細はmy このエラーと解決策についての投稿 で参照できます。

0

私はこの正確な関数を使用しませんでしたが、この同じエラーが発生しました。

私の場合、プロトコルを削除する必要がありました。

の代わりに $uri = "http://api.hostip.info/?ip=$ip&position=true";

つかいます $uri = "api.hostip.info/?ip=$ip&position=true";

そして、それはその後うまくいった

0
Mendy