PHP / cURL / Fedora emite resolver o nome do host possivelmente um problema de DNS?

3

Eu tenho o seguinte script de teste simples para cURL / php em um servidor FC12 / apache que tem PHP 5.3.2, cURL v7.19.7 (de acordo com 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;
}

Agora, se eu o executar no navegador, ele retornará: "Erro: não foi possível resolver o host 'www.google.com'"

Se eu o executar através da linha de comando do meu php-cgi no servidor, ele retornará o que você esperaria (sem todos os 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

Se eu alterar a linha do google para o ip do google, por exemplo link , o script funciona através do navegador, bem como pela linha de comando.

dig, ping, nslookup e dns em geral parecem estar funcionando bem nesta máquina. Devo acrescentar que o DNS desse site está usando um subdomínio foo.ourdomain.edu e obtendo seu DNS de um controlador de domínio do Windows 2003.

    
por chris cohen 13.07.2010 / 22:33

2 respostas

0

Pode ser a permissão de /etc/hosts ?

Eu também experimentei esse problema e descobri

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

Deve ser legível em todo o mundo, mudar isso para:

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

    
por 19.12.2017 / 01:43
-1

Você precisa ativar o booleano httpd_can_network_connect SELinux se quiser permitir que o httpd (no qual o PHP é executado) faça conexões de rede externas. Veja a página booleans(8) man para detalhes.

    
por 14.07.2010 / 00:33