Anorionil
Anorionil

Reputation: 505

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?

Upvotes: 13

Views: 31482

Answers (3)

Diogo Melo
Diogo Melo

Reputation: 2163

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

Upvotes: 12

TheJosh
TheJosh

Reputation: 95

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.

Upvotes: 1

Peyman Mohamadpour
Peyman Mohamadpour

Reputation: 17944

This is because of connection limits on 2nd server, and I believe that you have set short time intervals for the cron job. As you know, servers control consecutive connections from each IP. You may choose a longer time interval to resolve this problem.

Upvotes: 0

Related Questions