Вы в основном не производите вывод через Zend Framework (кроме ваших заголовков).Попробуйте следующее:
if (file_exists($file)) {
$this->getResponse()
->setHeader('Content-Description','File Transfer', true)
->setHeader('Content-Type','application/octet-stream', true)
->setHeader('Content-Disposition','attachment; filename='.basename($file), true)
->setHeader('Content-Transfer-Encoding','binary', true)
->setHeader('Expires','0', true)
->setHeader('Cache-Control','must-revalidate, post-check=0, pre-check=0', true)
->setHeader('Pragma','public', true)
->setHeader('Content-Length: ' , filesize($file),true);
$this->getResponse()->setBody(file_get_contents($file));
}
Кстати, вам придется снова закомментировать ваши первые две строки кода и не выходить из системы (0), иначе это не будет работать, поскольку фактическая отправка заголовкови тело будет сделано после действия.