se debe a que el motor que dibuja el lienzo HTML del navegador ignora completamente los caracteres propios de formato.
una solución seria usarla función
nb2br para convertir los saltos
/n en <br />
otra es anidar dentro de las etiquetas
<pre></pre>
suerte
PD: puedes usar la función
readfile en vez de fopen y te ahorras 2 lineas de código