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?
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With