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
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..
Flávio Theruo Kaminisse on December 28th, 2006
Leandro,
Muito boa dica, vai para o del.icio.us
Abraços…