В дополнение к уже опубликованным данным есть заголовок, который вы можете попробовать.
Это всего лишь предложение о том, как оно должно обрабатываться, и пользовательский агент может игнорировать его и просто отображать файл в окне, если он знает, как:
<?php
header('Content-Type: text/plain'); # its a text file
header('Content-Disposition: attachment'); # hit to trigger external mechanisms instead of inbuilt
См. Rfc2183 для получения дополнительной информации о заголовке Content-Disposition.