Usa readfile() .. y ten cuidado con esa cabecera HTTP .. no todas son interpretadas igual por todos los navegadores ... Te recomiendo que uses algo tipo:
Código PHP:
<?
// Distintas funciones para obterner la url relativa, guardada como $url
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$el_nombre_que_quieras_darle_al_archivo");
readfile("$tu_archivo_con_la_ruta_completa_absoluta);
?>
El nombre que le das al archivo cuando lo descargas lo defines en en la cabecera HTTP conten-disposition .. Puede ser el mismo nombre que tengas en tu BD .. o incluso alguno "contante" ..
Pero, pruebalo con varios navegadores diferentes .. no todos responden igual a esas cabeceras ..
Un saludo,