I was just having the same problem. I wanted my script to take the ID of an mp3 in my database and get the correct path, then send the mp3. There is a PHP function to send the content of the file to the browser:
ReadFile($filename);
It will return FALSE if it fails, otherwise it returns the amount it read from the file. The only other thing you have to worry about are the HTTP headers. Try something similar to:
Header("Content-type: binary");
Header("Content-Disposition: filename=\"$filename\";");
make sure it goes before the actual ReadFile() call though. The only problem Ive run into is if there is an error (like the file doesn't exist) then you would probly want to make an HTML page error, but the header is there and will send it as a binary file.
Anyway, I hope this helps.