moltt 0 Denunciar post Postado Março 16, 2014 Pessoal, Não estou conseguindo realizar o download de um arquivo externo pelo cURL do PHP, e antes que perguntem, estou com allow_url_fopen = On em Master e Local. Tanto que em vez de utilizar cURL posso simplesmente usar copy() que o arquivo é baixado normalmente para o meu servidor. O problema é que preciso das informações de curl_getinfo(). Este é o código de teste que estou utilizando: <? error_reporting(E_ALL); $src = 'http://www.iniciarcanoas.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml'; $z = '/home/usuario/public_html/tmp/TESTE.xml'; $fp = fopen($z, 'w+'); $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $src, CURLOPT_FILE => $fp, CURLOPT_RETURNTRANSFER => false, CURLOPT_BINARYTRANSFER => true )); $down = curl_exec($ch); $info = curl_getinfo($ch); echo '{ '.curl_error($ch).' | '.$down.' | '.print_r($info, 1).' }'; curl_close($ch); fclose($fp); O código acima irá criar o arquivo /home/usuario/public_html/tmp/TESTE.xml vazio! O cURL não consegue baixar o conteúdo e fclose() fecha o arquivo sem nada dentro. A linha do echo retorna o segunte resultado, sem nenhum erro por curl_error(): { | 1 | Array ( => ://www.iniciarcanoas.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml [content_type] => text/xml [http_code] => 200 [header_size] => 162 [request_size] => 113 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.006103 [namelookup_time] => 0.003326 [connect_time] => 0.005004 [pretransfer_time] => 0.005064 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => 0 [starttransfer_time] => 0.00606 [redirect_time] => 0 ) } Se eu simplesmente utilizar copy(), o arquivo /home/usuario/public_html/tmp/TESTE.xml é baixado corretamente possuindo cerca de 1,9 MB. <? error_reporting(E_ALL); $src = 'http://www.iniciarcanoas.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml'; $z = '/home/usuario/public_html/tmp/TESTE.xml'; copy($src, $z); Alguém pode me dar uma luz do porquê cURL não está conseguindo baixar o arquivo? Sem retornar nenhum erro fica difícil. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 16, 2014 tem certeza de que retorna vazio? peloq ue parece está observando pelo browser. um documento XML possui tags. Todo browser interpreta as tags, não exibindo-as de forma literal.. se estiver com o Chrome, pressione CTRL+U para ver resultado do fonte enviado ao browser.. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Março 16, 2014 :seta: fwrite Compartilhar este post Link para o post Compartilhar em outros sites
moltt 0 Denunciar post Postado Março 17, 2014 Sim, certeza! Tamanho do arquivo é 0 como mostra no echo que citei. [size_download] => 0 A imagem acima mostra outros 2 testes de arquivos e fontes diferentes mudando apenas a origem e o destino: <? error_reporting(E_ALL); //$src = 'http://www.iniciarcanoas.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml'; //$z = '/home/usuario/public_html/tmp/TESTE.xml'; $src = 'http://www.leandrocidade.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml'; $z = '/home/usuario/public_html/tmp/TESTE2.xml'; //$src = 'http://strg-rnt.vistahosting.com.br/renasane/padrao4/vista.imobi/imovelavenda/padrao4.zip'; //$z = '/home/usuario/public_html/tmp/TESTE3.zip'; $fp = fopen($z, 'w+'); $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $src, CURLOPT_FILE => $fp )); $down = curl_exec($ch); $info = curl_getinfo($ch); echo '{ '.curl_error($ch).' | '.$down.' | '.print_r($info, 1).' }'; curl_close($ch); fclose($fp); Com estes 3 testes, somente o primeiro retorna o arquivo vazio. Não consigo entender o porquê. Se acessar os 3 arquivos pelo navegador, todos estão disponíveis, mas o cURL não baixa o primeiro. E se reparar o TESTE.xml, que baixa vazio é semelhante ao TESTE2.xml, que baixa corretamente com o cURL. A questão é, porquê o cURL conseque baixar http://www.leandrocidade.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml mas não consegue baixar http://www.iniciarcanoas.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml ???? Cabeçalhos de retorno (CURLOPT_WRITEHEADER): http://www.iniciarcanoas.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml HTTP/1.1 200 OKServer: nginxDate: Mon, 17 Mar 2014 00:55:51 GMTContent-Type: text/xmlContent-Length: 0Connection: keep-aliveKeep-Alive: timeout=15 http://www.leandrocidade.com.br/arquivos_integracao/BI_integracao_imovelavenda.xml HTTP/1.1 200 OKDate: Mon, 17 Mar 2014 00:58:17 GMTServer: ApacheLast-Modified: Fri, 14 Mar 2014 17:32:05 GMTETag: "a2eb1-1a8817-4f49472c9af40"Accept-Ranges: bytesContent-Length: 1738775Vary: Accept-EncodingContent-Type: application/xml :upset: Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 17, 2014 veja esse post: http://forum.imasters.com.br/topic/446928-problema-com-curl/?p=1768636 Compartilhar este post Link para o post Compartilhar em outros sites
moltt 0 Denunciar post Postado Março 19, 2014 veja esse post: http://forum.imasters.com.br/topic/446928-problema-com-curl/?p=1768636 Depois de vários chutes, consegui baixar o arquivo corretamente adicionando o parâmetro abaixo: CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7' Obrigado pela dica! Compartilhar este post Link para o post Compartilhar em outros sites