[英]Warning: 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.