Probabilmente accade perchè il tuo script non si comporta come ti aspetti. Prova ad utilizzare un path invece che un URL per readfile(), abilita la visualizzazione degli errori e una volta scaricato il file aprilo con il notepad per verificare che non contenga errori restituiti da PHP.