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アカウントにログインしました(キャプチャもありません)。
私は途方に暮れています。誰かアイデアはありますか?
ジーマン
PHPは/ etc/hostsまたは/etc/resolv.confにアクセスできません: 長期的な問題 がPHPにあります。この修正はApacheまたはPHPを起動しているものを再起動するか、PHPを起動しているものから/ etc/hostsと/etc/resolv.confが読み取り可能であることを確認します。
同じエラーが発生しました
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);
?>
ログに何か良いものはありますか?
その行の前にデバッグコードを追加して、スクリプトがそれを正しく解決できることを確認します。
今日私はこの欠陥を抱えていましたが、特定のイベントの後に発生し、原因を見つけたのではないかと思います。
いくつかのネットワーク機器の問題が原因で、サーバーで実際に再起動し、サーバーが再起動したときに、ケーブル接続に誤ったネットワーク接続がありました。これは事実上、DNSサーバーが利用できなかったことを意味します。
その間、このphp関数が呼び出され、その後、httpdを再起動するまで二度と機能しません。
バグはネットワーク障害(DNSが利用できないだけでなく到達不能、つまり間違ったサブネット)に関連している可能性があり、ネットワークがその後回復したときにこの機能がDNSを再度検索することはありません。
これは数年前のことですが、おそらくこのバグはPHPで修正されていますか?
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
コマンドをもう一度実行すると、魅力的に機能します。