I have the following simple test script for cURL/php on a FC12/apache server that has PHP 5.3.2, cURL v7.19.7 (according to phpinfo()):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/');
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'read_body');
if ($error = curl_error($ch)) {
    echo "Error: $error<br />\n";
function read_header($ch, $string)
    $length = strlen($string);
    echo "Received $length bytes<br />\n";
    return $length;

Now, if I run it through the browser it returns: "Error: Couldn't resolve host 'www.google.com'"

If I run it through my php-cgi command line on the server it returns what you would expect (sans all the BRs):

Header: HTTP/1.1 200 OK
Header: Date: Tue, 13 Jul 2010 20:08:09 GMT
Header: Expires: -1
Header: Cache-Control: private, max-age=0
Header: Content-Type: text/html; charset=ISO-8859-1
Header: Server: gws
Header: X-XSS-Protection: 1; mode=block
Header: Transfer-Encoding: chunked
Received 2507 bytes
Received 1589 bytes
Received 1362 bytes
Received 2734 bytes
Received 1690 bytes

If I change the google line to google's ip e.g. then the script works through the browser as well as through the command line.

dig, ping, nslookup and general dns seem to be working fine on this machine. I should add that DNS for this site is using a subdomain foo.ourdomain.edu and getting it's DNS from a Windows 2003 domain controller.


May be the permission of /etc/hosts ?

I have also experienced to this problem and found

-rw-------. 1 root root 80 Dec 19 08:35 /etc/resolv.conf

It should be world readable, change that to:

-rw-r--r--. 1 root root 80 Dec 19 08:35 /etc/resolv.conf


You have to enable the httpd_can_network_connect SELinux boolean if you want to allow httpd (which PHP runs as) to make external network connections. See the booleans(8) man page for details.

  • getsebool -a | grep httpd_can gives me: httpd_can_network_connect --> on httpd_can_network_connect_db --> on httpd_can_network_relay --> on httpd_can_sendmail --> on still no joy – chris cohen Jul 14 '10 at 12:50
  • This is somehow a DNS issue, isn't it? Appears clear for me because accessing by IP works from a script. – whitequark Aug 16 '10 at 11:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.