3

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');
curl_exec($ch);
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
Header:
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. http://72.14.204.147/ 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.

1

2 Answers 2

0

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

-1

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.

2
  • 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 Jul 14, 2010 at 12:50
  • This is somehow a DNS issue, isn't it? Appears clear for me because accessing by IP works from a script.
    – Catherine
    Aug 16, 2010 at 11:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .