Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

file_get_contents(): php_network_getaddresses: getaddrinfo failed

I'm trying to update some values from one server to another server with a cron job. I use file_get_contents().

The strange thing is that this fails occasionally. One minute it works, another minute it won't work. I receive these two errors:

PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known

PHP Warning: file_get_contents(): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known

and:

PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No address associated with hostname

PHP Warning: file_get_contents(): failed to open stream: php_network_getaddresses: getaddrinfo failed: No address associated with hostname

I've logged into the server that experiences this problem. Using ping or traceroute works fine, so I've ruled out DNS issues. I've also added the google DNS nameservers just to be sure. A third server that uses the exact same code doesn't have this problem, so it looks to be a problem on the "calling" end, not the "responding" end. Replacing the hostname with IP is not an option for this case.

Does anyone know how to solve this?

like image 220
Anorionil Avatar asked Apr 30 '14 11:04

Anorionil


2 Answers

In my case, the trouble was that Apache get the DNS entries from /etc/resolv.conf when it starts. By the time I started my Apache, the network was not set yet. Restarting Apache (after networking is configured) solved the problem for me.

I explained the case in more details on my blog post http://diogomelo.net/blog/16/Warning-file_get_contents-php_network_getaddresses-getaddrinfo-failed-No-address-associated-with-hostname

like image 101
Diogo Melo Avatar answered Nov 11 '22 01:11

Diogo Melo


The name lookup appears to fail whilst running within a cron job sometimes. I've only seen it with names in /etc/hosts, but I haven't tested DNS names.

I was seeing it with sending email and SMTP connection timeouts.

I don't know the exact cause, but in my case I got my SMTP code to connect to 127.0.0.1 instead of localhost and the problem went away.

like image 31
TheJosh Avatar answered Nov 11 '22 02:11

TheJosh