Leandro Vieira Pinho´s Blog

Just another WordPress weblog

Ler arquivos remotos com PHP na DreamHost

December 27th, 2006. Published under curl, dreamhost, php. 9 Comments.

Durante todo o dia, estive desenvolvendo alguns recursos para um projeto em que estou envolvido. E para tal utilizei a função file do PHP. Uma vez que se fazia necessário a leitura remota de arquivos.

Meu código era mais ou menos o seguinte:

$arrLinhasPagina = file($url);
foreach( $arrLinhasPagina as $strLinha ) {
	// fal algo
}

Mas ao testar o sistema on-line recebi uma mensagem de erro, um tanto quanto inesperada por mim (já é tarde, quero dormir.) que me informava o seguinte: “URL file-access is disabled in the server configuration in [...]“. Caramba não funcionou, e agora José? A solução foi a de sempre.

E com isso, descobri que a DreamHost desabilita a opção allow_url_fopen que nos permite abrir, ler, incluir um arquivo remoto, entre outras opções. A alternativa é utilizar a cURL library.

Então, o código demonstrado acima teve que ser refeito, e assim foi. Resultando no seguinte:

$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
$file_contents = curl_exec($ch);
curl_close($ch);
$arrLinhasPagina = explode("n",$file_contents); // Há uma \ (barra invertida) junto ao n.
foreach( $arrLinhasPagina as $strLinha ) {
	// fal algo
}

Este foi meu desafio de hoje e espero que a solução também possa ser útil a vocês.

Mais informações a respeito.

9 Comments

Flávio Theruo Kaminisse  on December 28th, 2006

Leandro,
Muito boa dica, vai para o del.icio.us
Abraços…

Daniel Ribeiro  on January 2nd, 2007

eu tbm tive esse problema qdo migrei uma aplicacao minha para a dreamhost.
achei a solucao no proprio wiki deles: http://wiki.dreamhost.com/index.php/CURL
mas uma boa iniciativa postar no blog, ate porque nem sempre muitos lembram de procurar a solucao para esses problemas diretamente na fonte.

bruno  on January 6th, 2007

Gostaria de saber como faço pra verificar o tamanho de um arquivo remoto usando
CURLOPT_INFILESIZE

Gustavo  on January 17th, 2007

Cara, muito bom! Seu post acabou de me salvar!
Estava com o mesmo problema com a DreamHost.
Muito obrigado!

Irineu Martins Junior  on July 24th, 2007

Ajudou muito… ou melhor, resolveu meu problema!
Muito agradecido!

Willian  on December 25th, 2007

Muito bom.

diego  on May 29th, 2008

Comigo não deu certo, quando ele vai executar o comando $file_contents = curl_exec (ch); retorna uma página de erro: “Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.”

=/

diego  on May 29th, 2008

Aqui nao deixou eu postar com $ch. E deu a mesma página de erro! Tem idéia qual o problema?

Thiago Camargo  on June 19th, 2008

A tempos estava amarrado a um servidor por conta desta função.. até que em fim largo esse host q nao da mais conta, so pq ele deixava usar a “file()”…
Valew mesmo..

Leave a Comment