Te faltó leer el archivo y entregarlo al buffer de salida ..
Eso lo puedes hacer con una sóla función:
Código PHP:
readfile($archivo);
(despues de las cabeceras HTTP y suponiendo que $archivo tiene la ruta completa hacia el archivo ...)
Y el:
Código PHP:
header("Content-Disposition: attachment; filename=$archivo");
mejor usa:
Código PHP:
header("Content-Disposition: attachment; filename=".basename($archivo));
con basename() te quedas con el nombre_archivo.tal de la ruta completa que pueda tener y ese será el nombre que se ofrecerá para la descarga.
Un saludo,