file_get_contents wrappers url funcionam em cli mas não em cgi

2

Eu tenho um grande problema. Acabei de atualizar para um novo servidor dedicado executando o Plesk 10 e Ubuntu 11.04 e meus scripts não podem executar file_get_contents ou curl para URLs externos no modo cgi. allow_url_fopen está definido como On no arquivo php.ini correto, mas ainda recebo o seguinte erro.

file_get_contents(http://www.google.com): failed to open stream: Permission denied

A solicitação de curl retorna falso com isto:

function get_data($url)
{
  // create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, false);

// grab URL and pass it to the browser
$data = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
 var_dump($data);
}    
get_data("http://www.google.com");//bool(false)

Ambos (file_get_contents e curl) funcionam bem em scripts executados a partir da linha de comando e do cron e ambos são executados corretamente quando o php é executado como módulo do apache. É apenas quando rodando no navegador e como um aplicativo cgi ou fastcgi que o problema surge. Eu tive a empresa de hospedagem em todo o dia sem sorte. Qualquer ajuda recebida com gratidão.

    
por Liam Bailey 18.05.2012 / 23:05

1 resposta

2

Descobriu-se que o SELinux estava causando o problema, corrigi-lo com este comando:

setsebool -P httpd_can_network_connect 1

Obrigado a @jsmith neste tópico: erro file_get_contents do PHP no CentOS como ele foi a segunda pessoa que sugeriu o SELinux como causador de tais problemas no centOS. Eu sou um novato, então tentarei algo quando for confirmado por mais de uma fonte.

    
por 19.05.2012 / 00:54