Apache curl via proxy HTTP

2

Estou tentando fazer com que o PHP execute uma conexão de curl para outro servidor. Para se conectar ao servidor, precisamos passar por um proxy. No bash, definimos a variável de env http_proxy e isso funciona corretamente ao usar o script php na linha de comando. No entanto, ao tentar executar o curl ou wget do apache, ele falhará sem erros. O servidor é configurado com o SELinux baseado nos padrões do Centos. Isso não mudou porque não tenho certeza sobre a configuração do SELinux. Alguém mais teve um problema semelhante?

    
por Alex Lintott 29.11.2010 / 18:03

2 respostas

4

Sob o SELinux, o httpd (e, portanto, seus filhos) não tem permissão para fazer conexões de saída. Experimente

setsebool -P httpd_can_network_connect 1

Você deve ver as mensagens em /var/log/messages ou /var/log/audit/audit.log se, de fato, o selinux for a causa.

Se você é novato em rodar o apache sob o selinux, dê uma olhada em httpd_selinux(8) .

Editado para adicionar: P.S. Se você não é um guru do selinux, planeje gastar muito tempo tentando fazer configurações de apache ligeiramente incomuns trabalhando sob o selinux.

    
por 30.11.2010 / 00:52
0

Você disse que o curl precisa se conectar através de um proxy?

$curlHandle=curl_init();
curl_setopt($curlHandle, CURLOPT_URL, 'http://www.google.com');
curl_setopt($curlHandle, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($curlHandle, CURLOPT_PROXYPORT, 8080);
curl_setopt($curlHandle, CURLOPT_PROXY, 'proxy.localnet.com');
// optional
// curl_setopt($curlHandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
// curl_setopt($curlHandle, CURLOPT_PROXYUSERPWD, 'user:s3cr3t'); 
// curl_setopt($curlHandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);

$out=curl_exec($curlHandle);

curl_close($curlHandle);
    
por 30.11.2010 / 11:14