A maioria das funções de stream e filesystem aceitam URLs completas e fazem uso da abstração do protocolo wrapper, incluindo a função copy.
Utilizando-a, o programador será capaz de simplificar a codificação necessária para obter um arquivo remoto já salvando onde deseja, como no exemplo abaixo:
$url = "http://drall.com.br/download.teste"; copy($url, '/tmp/' . urldecode(basename($url)));
O código acima irá obter o arquivo download.teste e salvar localmente no servidor que executa o código PHP.
Caso o interesse seja repassar o conteúdo remoto para o cliente que estiver acessando pelo browser sem informar ao cliente o endereço real do arquivo, o código ficaria como no exemplo abaixo:
$url = 'http://drall.com.br/download.teste'; $handle = fopen($url, 'r'); $meta_data = stream_get_meta_data($handle); // Repassa todos os headers do servidor remoto para o cliente deste script foreach ( $meta_data['wrapper_data'] as $header ) { header($header); } // Repassa o conteúdo para o cliente deste script fpassthru($handle);