web-dev-qa-db-ja.com

名前解決の一時的な失敗:ホスト名の検索の失敗

PHPにスクリプトがあり、何ヶ月も問題なく動作しています。最近は動作しなくなりました。

このスクリプトはGmailに接続して、顧客にメールを送信します。

最近、スクリプトを実行するとこのエラーが発生し始めました。

The SMTP connection failed to start [tls://smtp.gmail.com:465]: 
fsockopen returned Error Number 0 and Error String 'php_network_getaddresses: 
getaddrinfo failed: Temporary failure in name resolution'

覚えておいてください、これはコード変更なしでした。

Resolv.confを確認しましたが、問題はないようです:

nameserver 208.67.222.222

私はgmail.comにpingできます:

# ping smtp.gmail.com
PING gmail-smtp-msa.l.google.com (74.125.93.111) 56(84) bytes of data.
64 bytes from qw-in-f111.google.com (74.125.93.111): icmp_seq=1 ttl=247 time=26.7 ms  

Lynx経由でGoogleや他のサイトに問題なく接続できます。

問題なくGmailアカウントにログインしました(キャプチャもありません)。

私は途方に暮れています。誰かアイデアはありますか?

ジーマン

10
GeoffreyF67

PHPは/ etc/hostsまたは/etc/resolv.confにアクセスできません: 長期的な問題 がPHPにあります。この修正はApacheまたはPHPを起動しているものを再起動するか、PHPを起動しているものから/ etc/hostsと/etc/resolv.confが読み取り可能であることを確認します。

13
user4253

同じエラーが発生しました

service httpd restart

トリックをした...

% Dig @208.67.222.222 smtp.gmail.com +short
gmail-smtp-msa.l.google.com.
209.85.201.109
209.85.201.111
%

次に、Xdebugを使用して、問題が正確にどこにあるかを確認します。

<?php
xdebug_start_trace('/tmp/lookup-trace.log');
$ip = gethostbyname('smtp.gmail.com');
xdebug_stop_trace();
die($IP);
?>

ログに何か良いものはありますか?

2
Xerxes

その行の前にデバッグコードを追加して、スクリプトがそれを正しく解決できることを確認します。

1
Matt Simmons

今日私はこの欠陥を抱えていましたが、特定のイベントの後に発生し、原因を見つけたのではないかと思います。

いくつかのネットワーク機器の問題が原因で、サーバーで実際に再起動し、サーバーが再起動したときに、ケーブル接続に誤ったネットワーク接続がありました。これは事実上、DNSサーバーが利用できなかったことを意味します。

その間、このphp関数が呼び出され、その後、httpdを再起動するまで二度と機能しません。

バグはネットワーク障害(DNSが利用できないだけでなく到達不能、つまり間違ったサブネット)に関連している可能性があり、ネットワークがその後回復したときにこの機能がDNSを再度検索することはありません。

これは数年前のことですが、おそらくこのバグはPHPで修正されていますか?

0
Charlie

Magento 2を最新バージョンにアップグレードしているときに次の問題が発生したので、phpの設定に問題があると思われます。

The "https://repo.magento.com/packages.json" file could not be downloaded: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 
failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

Xampp throughコマンドを再起動して解決しました。

Sudo /opt/lampp/lampp/stop
Sudo /opt/lampp/lampp/start

次に、composer updateコマンドをもう一度実行すると、魅力的に機能します。

0
Umar Yousaf