<?php
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($name_of_file));
header("Content-disposition: attachment; filename=" . $name_of_file);
readfile($name_of_file);
die();
1) Вы должны убедиться, что файл существует и доступен для чтения
2) Возможно, стоит добавить ob_end_clean();
перед отправкой заголовков (если вы уже что-то отправили)
РЕДАКТИРОВАТЬ: Удалено бесполезно ;
в соответствии с комментариями от porneL, thnx