簡體   English   中英

file_get_contents():php_network_getaddresses:getaddrinfo失敗

[英]file_get_contents(): php_network_getaddresses: getaddrinfo failed

我正在嘗試使用cron作業將一些值從一台服務器更新到另一台服務器。 我使用file_get_contents()。

奇怪的是偶爾會失敗。 一分鍾它工作,另一分鍾它將無法工作。 我收到這兩個錯誤:

PHP警告:file_get_contents():php_network_getaddresses:getaddrinfo失敗:名稱或服務未知

PHP警告:file_get_contents():無法打開流:php_network_getaddresses:getaddrinfo failed:名稱或服務未知

和:

PHP警告:file_get_contents():php_network_getaddresses:getaddrinfo失敗:沒有與主機名關聯的地址

PHP警告:file_get_contents():無法打開流:php_network_getaddresses:getaddrinfo failed:沒有與主機名關聯的地址

我已登錄遇到此問題的服務器。 使用ping或traceroute工作正常,所以我排除了DNS問題。 我還添加了谷歌DNS名稱服務器,以確保。 使用完全相同的代碼的第三個服務器沒有這個問題,所以它看起來是“調用”端的問題,而不是“響應”端。 在這種情況下,不能使用IP替換主機名。

有誰知道如何解決這個問題?

在我的例子中,問題是Apache在啟動時從/etc/resolv.conf獲取DNS條目。 當我啟動Apache時,網絡尚未設置。 重新啟動Apache(配置網絡后)解決了我的問題。

我在博客文章中詳細解釋了這個案例http://diogomelo.net/blog/16/Warning-file_get_contents-php_network_getaddresses-getaddrinfo-failed-No-address-associated-with-hostname

有時,在cron作業中運行時,名稱查找似乎失敗。 我只在/ etc / hosts中看到了它的名字,但我還沒有測試過DNS名稱。

我通過發送電子郵件和SMTP連接超時看到它。

我不知道具體原因,但在我的情況下,我得到了我的SMTP代碼連接到127.0.0.1而不是localhost ,問題就消失了。

這是因為第二台服務器上的連接限制,我相信您已為cron作業設置了較短的時間間隔。 如您所知,服務器控制來自每個IP的連續連接。 您可以選擇較長的時間間隔來解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM