Debes usar cabeceras HTTP para indicar a tu cliente (navegador) que los datos que vas a enviar son para descargar.
 
Más info y ejemplos: 
www.php.net/header 
Así que tendras un script tipo:
descargar.php?archivo=tal.pfd 
que hará esos header() y demás junto con un readfile() tras el envio de las cabeceras HTTP adecuadas para entregar el archivo al "buffer" de salida. 
Un saludo,