Pero .. ya usas algún script que entregue tu archivo para descargar o verlo? .. que haces para vincular el archivo? un simple link generas o haces un header ("Location: ....") simplemente?
Bueno, .. en principio lo que debes hacer es componer las cabeceras HTTP adecuadas para indicar a tu navegador que el archivo que vas a enviarle es para que lo descarge. y de ahí leer con PHP tu archivo desde su ubicación actual dentro del sistema de archivos de tu servidor (o si fuese binario .. en tu BD desde esta) para entregarlo al buffer de salida de PHP ..
Si son archivos .. haciendo un:
readfile("ruta absoluta archivo/nombre_archivo.tal");
www.php.net/readfile
Si son archivos "binarios" que están en tu BD...
echo $dato;
Y antes de eso como comentaba:
header()
www.php.net/header
(ahí veras las cabeceras adecuadas del protocolo HTTP que debes usar).
De esta forma .. ya puedes poner tus archivos fuera de tu "DocumentRoot" que es todo lo que queda accesible vía HTTP si haces una llamada tipo
http://www.tal.ta/archivos/archivo.tal .. puedes ubicarlo fuera de tu "DocumentRoot" y llamarlos por su ruta absoluta en tu servidor (/var/nose/blabal o como corresponda).
Un saludo,