Criando e servindo arquivos zipados com php
Eu estou tentando usar o seguinte código para criar um arquivo zip de um diretório e servi-lo para o usuário através de um download http:
// write the file
file_put_contents($path . "/index.html", $output);
// zip up the contents
chdir($path);
exec("zip -r {$course->name} ./");
$filename = "{$course->name}.zip";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' .urlencode($filename));
header('Content-Transfer-Encoding: binary');
readfile($filename);
Eu sou capaz de criar o arquivo zip, mas baixá-lo através de http não está funcionando. Se eu baixar o arquivo zip que é criado usando um cliente FTP, então o Stuffit Expander do Mac descompacta os arquivos, mas se eu baixá-lo por http, o unzipper do Mac cria um loop infinito. O que quero dizer com isso é dizer que o arquivo que eu baixei é chamado course.zip, depois descompactando o arquivo dá course.zip.cpgz e descompactando aquele arquivo dando course.zip novamente ... e assim por diante.
Alguém tem alguma ideia?
Obrigado!